如何使用nestjs记录服务

问题描述 投票:9回答:3

我试图使用nestjs的内部Logger(在https://docs.nestjs.com/techniques/logger上描述 - >但没有描述如何使用它)

但我有问题(试图注入LoggerService等)

任何人都可以解释如何做到这一点?

TIA

javascript node.js typescript logging nestjs
3个回答
39
投票

最佳做法

比静态访问Logger更好的是为您的类创建一个实例:

@Controller()
export class AppController {
  private readonly logger = new Logger(AppController.name);

  @Get()
  async get() {
    this.logger.log('Getting stuff');
  }
}

为什么这样更好?

1)您可以在构造函数中提供类似new Logger(AppController.name)的上下文,以便类名(或其他任何内容)将成为此类中所有日志消息的一部分。

2)如果您在某个时候想要扩展或替换默认的LoggerService,除了设置新的记录器之外,您不需要更改任何应用程序代码。您的新记录器将自动使用。如果您静态访问它,它将继续采用默认实现。

const app = await NestFactory.create(AppModule, {logger: new MyLogger()});

5
投票

您需要先导入到您的班级:

import { Logger } from '@nestjs/common';

然后你可以开始记录:

Logger.log('info')
Logger.warn('warning')
Logger.error('something went wrong! ', error)

2
投票

答案很简单。 Logger类上有静态方法。

EG

static log(message: string, context = '', isTimeDiffEnabled = true) 

用法:

Logger.log('Only a test');
© www.soinside.com 2019 - 2024. All rights reserved.