首页 > 解决方案 > NestJs - 通过确定调用者姓名记录特定功能

问题描述

目前我正在使用 NestJs 默认日志记录并想出类似这样的东西

@Controller('users')
export class UsersController {
  private logger: Logger = new Logger(UsersController.name, true);

  @Get()
  public getAllUsers(): any[] {
    this.logger.debug('Getting all users', this.getAllUsers.name);
    return [];
  }
}

将显示日志消息

[Nest] 2926 - 01/05/2020, 7:39:19 PM [getAllUsers] 获取所有用户 +2094ms

将上下文参数自动设置为只需要编写会很酷

this.logger.debugFunction('Getting all users');

因为在记录控制器、服务和存储库功能时,事情可能会变得有些混乱。所以从文档

https://docs.nestjs.com/techniques/logger#extend-built-in-logger

可以扩展默认的日志记录行为。以我想出的文档为例

export class MyLogger extends Logger {
  debugFunction(message: string) {
    super.debug(message, 'this.caller.name');
  }
}

以前在这里问过这个

如何在 JavaScript 中找出调用者函数?

this.debugFunction.caller似乎不是一个好方法,因为文档清楚地说

在此处输入图像描述

有没有办法以生产代码的标准方式自动确定上下文(调用者)?

标签: javascripttypescriptnestjs

解决方案


推荐阅读