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实例处理,但此时这点并不重要。