日志记录接口

记录输出是向最终用户显示消息的另一种方式。

Webpack 日志记录器可供 加载器插件 使用。作为 统计信息 的一部分发出,并由用户在 webpack 配置 中配置。

Webpack 中自定义日志记录 API 的优势

  • 用于 配置日志记录 显示级别的通用位置
  • 日志记录输出可作为 stats.json 的一部分导出
  • 统计信息预设影响日志记录输出
  • 插件可以影响日志记录捕获和显示级别
  • 当使用多个插件和加载器时,它们使用通用的日志记录解决方案
  • Webpack 的 CLI、UI 工具可以选择不同的日志记录显示方式
  • Webpack 核心可以发出日志记录输出,例如计时数据

通过引入 Webpack 日志记录 API,我们希望统一 Webpack 插件和加载器发出日志的方式,并允许更好地检查构建问题。集成的日志记录解决方案通过改善开发体验来支持插件和加载器开发人员。为非 CLI Webpack 解决方案(如仪表板或其他 UI)铺平了道路。

在加载器和插件中获取和使用 Webpack 日志记录器的示例

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 示例中看到的那样,有两种类型的日志记录方法:

  1. compilation.getLogger
  2. 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

运行时日志记录 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: 用于将插件应用于运行时日志记录器

4 位贡献者

EugeneHlushkowizardofhogwartschenxsansnitin315