【问题标题】:NestJS Logging :: Enabling/disabling globallyNestJS 日志记录 :: 全局启用/禁用
【发布时间】:2021-11-05 16:54:28
【问题描述】:

我有几个由 NestJS 中的控制器或服务调用的实用程序类。每个实用程序类都使用记录器声明,如下所示:

export class A {
  
  private logger = new Logger(A.name);

  test() {
    this.logger.log('TEST');
  }

}

这有助于开发和故障排除,但在生产中,我希望能够关闭 debugverboselog 级别的日志。

除了单独注释掉日志语句之外,我还没有找到一种可靠的方法在全球范围内做到这一点。有没有办法从像main.ts 这样的中心位置这样做?

【问题讨论】:

  • 使 Logger 构造函数返回一个单例,并且对记录器的所有引用都是相同的记录器。然后在记录器上公开方法以更改日志级别等。
  • 感谢@Joe。记录器是NestJS 框架中的内置类。而且我想为每个类保留单独的记录器实例(这样它也可以在从内部调用时记录类名)。
  • 每个实例都可以从管理日志设置的共享文件/实例中提取配置。如果您仍然需要独立的记录器实例,则同样的想法。

标签: node.js nestjs


【解决方案1】:

您可以在创建app 时在应用的main.ts 文件中使用三元组来设置日志级别:

const app = await NestFactory.create(AppModule, {
  logger:
    process.env.NODE_ENV === 'development' ? ['log', 'debug', 'error', 'verbose', 'warn'] : ['error', 'warn'],
})

【讨论】:

    猜你喜欢
    • 2015-02-23
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2011-06-22
    • 2015-04-21
    • 2015-02-01
    相关资源
    最近更新 更多