问题描述
如何使用 ConfigService 设置允许的日志级别?
我尝试通过 main.ts 执行此操作,但在 app
创建调用期间设置了 logLevels,这也是 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)
似乎也是如此。
到目前为止我发现的唯一选项是检查实际日志记录方法中允许的日志级别:日志、警告、错误等...
@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);
}
}
有没有更好的方法来做到这一点?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)