mak*_*_at 21 javascript logging node.js typescript nestjs
我试图使用Loggernestjs 的内部(在https://docs.nestjs.com/techniques/logger - >上描述,但没有描述如何使用它)
但我有问题(试图注射LoggerService等)
任何人都可以解释如何做到这一点?
TIA
Kim*_*ern 58
比Logger静态访问更好的是为您的类创建一个实例:
@Controller()
export class AppController {
private readonly logger = new Logger(AppController.name);
@Get()
async get() {
this.logger.log('Getting stuff');
}
}
Run Code Online (Sandbox Code Playgroud)
1)您可以在构造函数中提供上下文,new Logger(AppController.name)以便类名(或其他任何内容)将成为此类中所有日志消息的一部分.
2)如果您在某些时候想要扩展或替换默认值LoggerService,除了设置新的记录器之外,您不需要更改任何应用程序代码.您的新记录器将自动使用.如果您静态访问它,它将继续采用默认实现.
const app = await NestFactory.create(AppModule, {logger: new MyLogger()});
Run Code Online (Sandbox Code Playgroud)
小智 9
您需要首先导入您的班级:
import { Logger } from '@nestjs/common';
Run Code Online (Sandbox Code Playgroud)
然后您可以开始记录:
Logger.log('info')
Logger.warn('warning')
Logger.error('something went wrong! ', error)
Run Code Online (Sandbox Code Playgroud)
最佳实践是注入现有的记录器。
app.module.ts
import { Logger, Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService, Logger],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
并在app.service.ts中
import { Injectable, Logger } from '@nestjs/common';
@Injectable()
export class AppService {
constructor(private readonly logger: Logger) {}
sayHello() {
this.logger.log('Hello world!')
}
}
Run Code Online (Sandbox Code Playgroud)
答案很简单。Logger 类有静态方法。
例如
static log(message: string, context = '', isTimeDiffEnabled = true)
Run Code Online (Sandbox Code Playgroud)
用法:
Logger.log('Only a test');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13163 次 |
| 最近记录: |