记录输出是向最终用户显示消息的另一种方式。
Webpack 日志记录器可供 加载器 和 插件 使用。作为 统计信息 的一部分发出,并由用户在 webpack 配置 中配置。
Webpack 中自定义日志记录 API 的优势
stats.json
的一部分导出通过引入 Webpack 日志记录 API,我们希望统一 Webpack 插件和加载器发出日志的方式,并允许更好地检查构建问题。集成的日志记录解决方案通过改善开发体验来支持插件和加载器开发人员。为非 CLI Webpack 解决方案(如仪表板或其他 UI)铺平了道路。
my-webpack-plugin.js
const PLUGIN_NAME = 'my-webpack-plugin';
export class MyWebpackPlugin {
apply(compiler) {
// you can access Logger from compiler
const logger = compiler.getInfrastructureLogger(PLUGIN_NAME);
logger.log('log from compiler');
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
// you can also access Logger from compilation
const logger = compilation.getLogger(PLUGIN_NAME);
logger.info('log from compilation');
});
}
}
my-webpack-loader.js
module.exports = function (source) {
// you can get Logger with `this.getLogger` in your webpack loaders
const logger = this.getLogger('my-webpack-loader');
logger.info('hello Logger');
return source;
};
如您从上面的 my-webpack-plugin.js
示例中看到的那样,有两种类型的日志记录方法:
compilation.getLogger
compiler.getInfrastructureLogger
建议在插件/日志记录与编译相关时使用 compilation.getLogger
,它们将存储在统计信息中。对于在编译周期之外发生的日志记录,请改用 compiler.getInfrastructureLogger
。
logger.error(...)
:用于错误消息logger.warn(...)
: 用于警告logger.info(...)
: 用于重要信息消息。这些消息默认显示。仅用于用户真正需要查看的消息logger.log(...)
: 用于不重要的信息消息。这些消息仅在用户选择查看时显示logger.debug(...)
: 用于调试信息。这些消息仅在用户选择查看特定模块的调试日志时显示logger.trace()
: 用于显示堆栈跟踪。显示方式与logger.debug
相同logger.group(...)
: 用于对消息进行分组。显示方式与logger.log
相同,但折叠显示logger.groupEnd()
: 用于结束日志分组logger.groupCollapsed(...)
: 用于将消息分组在一起。显示方式与logger.log
相同,但折叠显示。当日志级别设置为'verbose'
或'debug'
时,显示展开logger.status
: 写入临时消息,设置新状态,覆盖之前的状态logger.clear()
: 用于打印水平线。显示方式与logger.log
相同logger.profile(...)
, logger.profileEnd(...)
: 用于捕获配置文件。在支持的情况下委托给console.profile
运行时日志记录 API 仅用于作为开发工具,不建议包含在生产模式中。
const logging = require('webpack/lib/logging/runtime')
: 要在运行时使用日志记录器,请直接从 webpack 中引入它logging.getLogger('name')
: 用于按名称获取单个日志记录器logging.configureDefaultLogger(...)
: 用于覆盖默认日志记录器。const logging = require('webpack/lib/logging/runtime');
logging.configureDefaultLogger({
level: 'log',
debug: /something/,
});
logging.hooks.log
: 用于将插件应用于运行时日志记录器