diff --git a/src/BundleAnalyzerPlugin.js b/src/BundleAnalyzerPlugin.js index 6d294730..20b10443 100644 --- a/src/BundleAnalyzerPlugin.js +++ b/src/BundleAnalyzerPlugin.js @@ -28,12 +28,17 @@ class BundleAnalyzerPlugin { }; this.server = null; - this.logger = new Logger(this.opts.logLevel); } apply(compiler) { this.compiler = compiler; + // Respect default logging level from webpack + const defaultLoggerLevel = compiler.options.infrastructureLogging && compiler.options.infrastructureLogging.level ? + compiler.options.infrastructureLogging.level : this.opts.logLevel; + this.logger = compiler.getInfrastructureLogger ? + compiler.getInfrastructureLogger('webpack-bundle-analyzer') : new Logger(defaultLoggerLevel); + const done = (stats, callback) => { callback = callback || (() => {}); diff --git a/src/Logger.js b/src/Logger.js index cdd7ae10..77478bad 100644 --- a/src/Logger.js +++ b/src/Logger.js @@ -6,14 +6,28 @@ const LEVELS = [ 'silent' ]; +const loggerMethods = [ + 'log', + 'trace', + 'group', + 'groupEnd', + 'groupEndCollapsed', + 'status', + 'clear', + 'profile' +]; + const LEVEL_TO_CONSOLE_METHOD = new Map([ ['debug', 'log'], ['info', 'log'], ['warn', 'log'] ]); -class Logger { +const webpackLogger = require('webpack/lib/logging/runtime'); +if (webpackLogger.getLogger) LEVELS.push(...loggerMethods); + +class Logger { static levels = LEVELS; static defaultLevel = 'info'; @@ -35,7 +49,11 @@ class Logger { } _log(level, ...args) { - console[LEVEL_TO_CONSOLE_METHOD.get(level) || level](...args); + if (webpackLogger.getLogger) { + webpackLogger.getLogger('webpack-bundle-analyzer')[level](...args); + } else { + console[LEVEL_TO_CONSOLE_METHOD.get(level) || level](...args); + } } };