如何根据环境禁用 NestJS Logger?

lin*_*ran 8 typescript nestjs

我在NestFactory.create()方法中使用记录器选项来控制生产模式下记录器的日志级别,但它不起作用ENV='production',仍然显示Logger.log()消息

const bootstrap = async () => {
  const app = await NestFactory.create<NestExpressApplication>(AppModule, {
    logger:
      env.ENV == 'development'
        ? ['debug', 'error', 'log', 'verbose', 'warn']
        : ['error', 'warn'],
  });

  app.enableCors();

  app.use(helmet());
  app.set('trust proxy', 1);
Run Code Online (Sandbox Code Playgroud)

Vin*_*OPS -2

在 Node.js 中,环境变量是通过process.env全局对象访问的。

以下示例按预期工作,阅读process.env.ENV

async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    logger: process.env.ENV === 'production' ? ['warn', 'error'] : ['debug', 'log', 'verbose']
  });
  await app.listen(3000);
}

bootstrap();
Run Code Online (Sandbox Code Playgroud)

yarn start显示所有初始化日志,反之不ENV=production yarn start显示初始化日志

  • 我刚刚克隆了您的存储库并测试了您的代码。它正在按预期工作。从 `ENV='development'` 开始,我可以看到 NestJS 的初始化日志(例如“正在启动 Nest 应用程序...”),而从 `ENV='development'` 开始,我只能看到错误(MoongoseModule,“无法连接”到数据库”)。(我使用“yarn”安装了所有软件包并创建了一个空的 dotenv 文件 `.development`,然后从这两个配置开始) (2认同)