0

如何使用 ConfigService 设置允许的日志级别?

我试图通过 main.ts 来完成,但 logLevels 是在app创建调用期间设置的,这也是getConfigService 所必需的。

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);
);

是否可以创建将applogLevels 设置为默认值的对象然后覆盖它?像这样的东西:

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);
    }
}

有一个更好的方法吗?

4

0 回答 0