如何使用 ConfigService 设置允许的日志级别?
我试图通过 main.ts 来完成,但 logLevels 是在app
创建调用期间设置的,这也是get
ConfigService 所必需的。
const app = await NestFactory.create(
AppModule.register(),
{ logger: configService.get('LOG_LEVELS') } // <-- at this point I still can't do: const configService = app.get(ConfigService);
);
是否可以创建将app
logLevels 设置为默认值的对象然后覆盖它?像这样的东西:
const app = await NestFactory.create(
AppModule.register(),
{ logger: true }
);
const configService = app.get('ConfigService');
app.setLogLevels(configService.get('LOG_LEVELS'));
也尝试了不同的途径,但解决方案并不理想。我首先尝试在 MyLogger 的构造函数中设置 logLevels,但类成员 logLevels 是 Logger 私有的,因此我无法覆盖它。该方法似乎也是如此isLogLevelEnabled(level)
。
到目前为止,我发现的唯一选择是检查实际日志记录方法中允许的 logLevels:日志、警告、错误等......
@Injectable()
export class MyLogger extends Logger {
constructor(private configService: ConfigService) {
super();
MyLogger.logLevels = configService.get('LOG_LEVELS') // <-- can't set because it's private to Logger
}
isLogLevelEnabled(level) {} // <-- can't override because it's private to Logger
log(message: any, context? string): void {
const logLevels = this.configService.get('LOG_LEVELS');
// check if this method has the right level to log the message depending on logLevels before proceeding
super.log(message, context);
}
}
有一个更好的方法吗?