From b51eac30bed0cae62ad5745dd5a4d8176be88d56 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 9 Apr 2020 19:19:46 +0200 Subject: [PATCH] ADD logLever preset property && filter lower lever log messages --- lib/client-logger/package.json | 4 +++- lib/client-logger/src/index.ts | 21 +++++++++++++------ lib/client-logger/src/typings.d.ts | 1 + lib/core/src/server/common/common-preset.js | 2 ++ .../server/manager/manager-webpack.config.js | 5 ++++- .../server/preview/iframe-webpack.config.js | 5 ++++- 6 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 lib/client-logger/src/typings.d.ts diff --git a/lib/client-logger/package.json b/lib/client-logger/package.json index 8d672258bac..2fcf320f948 100644 --- a/lib/client-logger/package.json +++ b/lib/client-logger/package.json @@ -28,7 +28,9 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "core-js": "^3.0.1" + "core-js": "^3.0.1", + "global": "^4.3.2", + "loglevel": "^1.6.7" }, "publishConfig": { "access": "public" diff --git a/lib/client-logger/src/index.ts b/lib/client-logger/src/index.ts index be814d8b8a7..6b180105504 100644 --- a/lib/client-logger/src/index.ts +++ b/lib/client-logger/src/index.ts @@ -1,16 +1,25 @@ -const { console } = global; - -/* tslint:disable: no-console */ +import { window, LOGLEVEL } from 'global'; +import console from 'loglevel'; export const logger = { + trace: (message: any, ...rest: any[]): void => console.trace(message, ...rest), debug: (message: any, ...rest: any[]): void => console.debug(message, ...rest), - log: (message: any, ...rest: any[]): void => console.log(message, ...rest), + log: (message: any, ...rest: any[]): void => window.console.log(message, ...rest), info: (message: any, ...rest: any[]): void => console.info(message, ...rest), warn: (message: any, ...rest: any[]): void => console.warn(message, ...rest), error: (message: any, ...rest: any[]): void => console.error(message, ...rest), }; -export const pretty = (type: keyof typeof logger) => (...args: string[]) => { +if (LOGLEVEL) { + console.setLevel(LOGLEVEL); +} + +// eslint-disable-next-line no-underscore-dangle +window.__STORYBOOK_LOGGER = console; + +export const pretty = (type: 'trace' | 'debug' | 'info' | 'warn' | 'error') => ( + ...args: string[] +) => { const argArray = []; if (args.length) { @@ -36,8 +45,8 @@ export const pretty = (type: keyof typeof logger) => (...args: string[]) => { console[type].apply(console, argArray); }; +pretty.trace = pretty('trace'); pretty.debug = pretty('debug'); -pretty.log = pretty('log'); pretty.info = pretty('info'); pretty.warn = pretty('warn'); pretty.error = pretty('error'); diff --git a/lib/client-logger/src/typings.d.ts b/lib/client-logger/src/typings.d.ts new file mode 100644 index 00000000000..2f4eb9cf4fd --- /dev/null +++ b/lib/client-logger/src/typings.d.ts @@ -0,0 +1 @@ +declare module 'global'; diff --git a/lib/core/src/server/common/common-preset.js b/lib/core/src/server/common/common-preset.js index 222a9127a75..0d52a6e80df 100644 --- a/lib/core/src/server/common/common-preset.js +++ b/lib/core/src/server/common/common-preset.js @@ -9,3 +9,5 @@ export const babel = async (_, options) => { presets.apply('babelDefault', babelConfig(options), options) ); }; + +export const logLevel = () => 'info'; diff --git a/lib/core/src/server/manager/manager-webpack.config.js b/lib/core/src/server/manager/manager-webpack.config.js index a5251517eb9..29d4ff3c36d 100644 --- a/lib/core/src/server/manager/manager-webpack.config.js +++ b/lib/core/src/server/manager/manager-webpack.config.js @@ -21,7 +21,7 @@ import { resolvePathInStorybookCache } from '../utils/resolve-path-in-sb-cache'; const coreDirName = path.dirname(require.resolve('@storybook/core/package.json')); const context = path.join(coreDirName, '../../node_modules'); -export default ({ +export default async ({ configDir, configType, docsMode, @@ -32,8 +32,10 @@ export default ({ cache, previewUrl, versionCheck, + presets, }) => { const { raw, stringified } = loadEnv(); + const logLevel = await presets.apply('logLevel', []); const isProd = configType === 'PRODUCTION'; const refsTemplate = fse.readFileSync(path.join(__dirname, 'virtualModuleRef.template.js'), { encoding: 'utf8', @@ -78,6 +80,7 @@ export default ({ version, dlls: dll ? ['./sb_dll/storybook_ui_dll.js'] : [], globals: { + LOGLEVEL: JSON.stringify(logLevel), VERSIONCHECK: JSON.stringify(versionCheck), DOCS_MODE: docsMode, // global docs mode PREVIEW_URL: previewUrl, // global preview URL diff --git a/lib/core/src/server/preview/iframe-webpack.config.js b/lib/core/src/server/preview/iframe-webpack.config.js index 31be082b625..eb49ebe3db3 100644 --- a/lib/core/src/server/preview/iframe-webpack.config.js +++ b/lib/core/src/server/preview/iframe-webpack.config.js @@ -39,6 +39,7 @@ export default async ({ presets, }) => { const dlls = await presets.apply('webpackDlls', []); + const logLevel = await presets.apply('logLevel', []); const { raw, stringified } = loadEnv({ production: true }); const babelLoader = createBabelLoader(babelOptions); const isProd = configType === 'PRODUCTION'; @@ -107,7 +108,9 @@ export default async ({ files, options, version: packageJson.version, - globals: {}, + globals: { + LOGLEVEL: JSON.stringify(logLevel), + }, headHtmlSnippet: getPreviewHeadHtml(configDir, process.env), dlls, bodyHtmlSnippet: getPreviewBodyHtml(configDir, process.env),