[英]NestJS: How to set global log level for different environments
我正在使用 NestJS 內置記錄器。 我找不到設置全局日志級別的選項。 例如,對於開發環境,日志級別為“詳細”,對於生產環境,日志級別為“錯誤”。
另外,是否有一個選項可以禁用 NestJS 在輸出中添加的內容,即時間戳和其他信息,並且只記錄消息? 我需要這個,因為我們使用 Kibana 日志,它會自動添加必填字段。
您可以在main.ts
文件中設置日志級別:
const app = await NestFactory.create(AppModule, {
logger: process.env.NODE_ENV === 'development' ? ['log', 'debug', 'error', 'verbose', 'warn'] : ['error', 'warn'],
});
您可以使用該邏輯編寫自己的 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(),
});
我也找了一個日志級別切換器,但我沒有找到。
正如之前的評論中所建議的,您可以創建一個自定義記錄器並將其全局ApplicationModule
到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(),
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.