【发布时间】:2020-07-13 01:05:45
【问题描述】:
是否可以禁用 NestJS 默认记录器的彩色控制台输出? 我找不到关闭它的选项:-(
(多一些文字,因为这个问题对 StackOverflow 来说太简单了。)
【问题讨论】:
是否可以禁用 NestJS 默认记录器的彩色控制台输出? 我找不到关闭它的选项:-(
(多一些文字,因为这个问题对 StackOverflow 来说太简单了。)
【问题讨论】:
在NestFactory.create() 中添加带有logger: false 的选项
例如await NestFactory.create(ApplicationModule, { logger: false })
【讨论】:
logger.service中的Nestjs彩色日志消息,你可以尝试安装cli-color(Nestjs使用它)包并在项目本地配置
记录器服务使用模块cli-color,设置环境变量NO_COLOR禁用颜色代码的输出。
【讨论】:
您可以实现自己的自定义记录器。只需实现 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);
}
}
【讨论】:
虽然@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 日志中也很有效。
【讨论】: