【问题标题】:Disable colored console output禁用彩色控制台输出
【发布时间】:2020-07-13 01:05:45
【问题描述】:

是否可以禁用 NestJS 默认记录器的彩色控制台输出? 我找不到关闭它的选项:-(

(多一些文字,因为这个问题对 StackOverflow 来说太简单了。)

【问题讨论】:

    标签: logging nestjs


    【解决方案1】:

    NestFactory.create() 中添加带有logger: false 的选项

    例如await NestFactory.create(ApplicationModule, { logger: false })

    【讨论】:

    • 此选项关闭日志记录,但我想禁用彩色输出 -> 日志文件中没有颜色代码。
    • 不确定是否可行。 logger.service中的Nestjs彩色日志消息,你可以尝试安装cli-color(Nestjs使用它)包并在项目本地配置
    • 这不能回答问题。这只是禁用日志。
    【解决方案2】:

    记录器服务使用模块cli-color,设置环境变量NO_COLOR禁用颜色代码的输出。

    【讨论】:

      【解决方案3】:

      您可以实现自己的自定义记录器。只需实现 LoggerService 接口的每个方法,如下所示。 从“@nestjs/common”导入 { LoggerService };

      export class MyLogger implements LoggerService {
        log(message: string) {
          /* your implementation */
        }
        error(message: string, trace: string) {
          /* your implementation */
        }
        warn(message: string) {
          /* your implementation */
        }
        debug(message: string) {
          /* your implementation */
        }
        verbose(message: string) {
          /* your implementation */
        }
      }
      
      const app = await NestFactory.create(ApplicationModule, {
        logger: new MyLogger(),
      });
      await app.listen(3000);
      

      您可以通过扩展内置 Logger 类并覆盖默认实现的选定行为来满足您的需求,而不是从头开始编写记录器。

      import { Logger } from '@nestjs/common';
      
      export class MyLogger extends Logger {
        error(message: string, trace: string) {
          // add your tailored logic here
          super.error(message, trace);
        }
      }
      

      https://docs.nestjs.com/techniques/logger

      【讨论】:

        【解决方案4】:

        虽然@Andreas 的第二部分关于设置环境变量NO_COLOR 是正确的,但第一部分是错误的。 NestJS(至少从 v8 开始)不使用 cli-color 模块(也许他们更早使用它)。

        似乎他们已经实现了自己的 clc 东西,但他们确实尊重 NO_COLOR 标志。

        源码-https://github.com/nestjs/nest/blob/v8.0.8/packages/common/utils/cli-colors.util.ts#L3

        他们的documentation也说了同样的话-

        提示
        要在默认记录器的消息中禁用颜色,请设置 NO_COLOR 环境变量。

        所以下面是没有变量运行时我本地的输出-

        这就是我这样做的时候export NO_COLOR=true-

        这在 AWS CloudWatch 日志中也很有效。

        【讨论】:

          猜你喜欢
          • 2016-09-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-03
          • 2014-12-07
          • 2020-10-19
          • 2014-12-13
          • 2011-02-14
          相关资源
          最近更新 更多