nestjs日志_Nestjs开启日志

NestJs仿小米商城项目实战视频教程(视频+课件+源码) https://www.itying.com/goods-1139.html


nestjs日志

Nest附带一个默认的内部日志记录器实现,它在实例化过程中以及在一些不同的情况下使用,比如发生异常等等。但是,有时您可能希望完全禁用日志记录,或者提供自定义实现并自己处理消息。为了关闭记录器,我们使用Nest应用程序选项对象。

const app = await NestFactory.create(ApplicationModule, {
  logger: false,
});
await app.listen(3000);

你也可以只启用某些类型的日志:

const app = await NestFactory.create(ApplicationModule, {
  logger: ['error', 'warn'],
});
await app.listen(3000);

在某些场景中,我们可能希望在底层使用不同的日志记录器。为此,我们必须传递一个实现LoggerService接口的对象。例如,一个内置的控制台。

const app = await NestFactory.create(ApplicationModule, {
  logger: console,
});
await app.listen(3000);

但这不是一个最好的办法,我们也可以选择创建自定义的记录器:

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

export class MyLogger implements LoggerService {
  log(message: string) {}
  error(message: string, trace: string) {}
  warn(message: string) {}
  debug(message: string) {}
  verbose(message: string) {}
}

然后,我们可以MyLogger直接应用实例:

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

扩展内置的日志类

很多实例操作需要创建自己的日志。你不必完全重新发明轮子。只需扩展内置Logger类以部分覆盖默认实现,并使用super将调用委托给父类。

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

export class MyLogger extends Logger {
  error(message: string, trace: string) {
    // add your tailored logic here
    super.error(message, trace);
  }
}

依赖注入

如果要在Logger类中启用依赖项注入,则必须使MyLogger该类成为实际应用程序的一部分。例如,您可以创建一个LoggerModule:

import { Module } from '@nestjs/common';
import { MyLogger } from './my-logger.service.ts';

@Module({
  providers: [MyLogger],
  exports: [MyLogger],
})
export class LoggerModule {}

一旦LoggerModule在其他地方导入,框架将负责创建Logger类的实例。现在,要在整个应用程序中使用相同的Logger实例,包括引导和错误处理的东西,请使用以下方式:

const app = await NestFactory.create(ApplicationModule, {
  logger: false,
});
app.useLogger(app.get(MyLogger));
await app.listen(3000);

此解决方案的唯一缺点是您的第一个初始化消息将不会由您的Logger实例处理,但此时这点并不重要。