我正在使用NestJS内置记录器。我找不到设置全局日志级别的选项。例如对于开发人员环境,日志级别为“详细”;对于产品环境,日志级别为“错误”。
还有,是否有一个选项可以禁用NestJS在输出中添加的内容(即时间戳和其他信息),并且仅记录消息?我需要这个,因为我们使用Kibana日志,它会自动添加必填字段。
答案 0 :(得分:2)
您可以在main.ts
文件中设置日志级别:
const app = await NestFactory.create(AppModule, {
logger: process.env.NODE_ENV === 'development' ? ['log', 'debug', 'error', 'verbose', 'warn'] : ['error', 'warn'],
});
答案 1 :(得分:1)
您可以使用该逻辑编写自己的Logger并将其用作服务,也可以全局设置它
export class MyLogger extends Logger {
error(message: string, trace: string) {
// add your tailored logic here
super.error(message, trace);
}
}
const app = await NestFactory.create(ApplicationModule, {
logger: new MyLogger(),
});
答案 2 :(得分:0)
我也在寻找日志级别切换器,但没有找到。
如上一条注释中所述,您可以创建一个自定义记录器并将其全局应用到ApplicationModule
。
此自定义记录器将由Nest或您在控制器/服务/等中调用。
NestJs
\
use -> CustomLogger
/
Your business logic
在您的CustomLogger中,调用super.logger(nestjs内置记录器)和winston logger。
Winston Logger可以与kibana的运输工具一起设置,并接受日志级别。
const winstonLogger = new winston.Logger({
level: LOG_LEVEL,
transports: [
<here enable trasport for logstash/kibana>
}),
],
...
});
export class CustomLogger extends Logger {
debug(message: string) {
super.error(message, trace);
winstonLogger.error(message)
}
... (the same for warn, error, etc)
}
最后注册CustomLogger
const app = await NestFactory.create(ApplicationModule, {
logger: new CustomLogger(),
});