Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NestJs-通过确定调用方名称来实现特定于日志的函数_Javascript_Typescript_Nestjs - Fatal编程技术网

Javascript NestJs-通过确定调用方名称来实现特定于日志的函数

Javascript NestJs-通过确定调用方名称来实现特定于日志的函数,javascript,typescript,nestjs,Javascript,Typescript,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

目前,我正在使用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[getAllUsers]获取所有 用户数+2094ms

将上下文参数自动设置为“只需写入”会很酷

this.logger.debugFunction('Getting all users');
因为当记录控制器、服务和存储库功能时,事情可能会变得有点混乱。那么从文件上看呢

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

export class MyLogger extends Logger {
  debugFunction(message: string) {
    super.debug(message, 'this.caller.name');
  }
}
这是以前在这里问过的问题

但是
this.debugFunction.caller
似乎不是一个好方法,因为文档中明确指出


是否有一种方法可以以标准方式为生产代码自动确定上下文(调用者)?

我的问题是,您真的需要知道生成调试语句的函数的名称吗?如果是这样,只需在
debugFunction
中抛出/捕获异常并捕获堆栈跟踪。根据个人经验,使用更清晰的调试消息可以消除传入(或确定)调用函数的需要。你也可以用“LoggerFactory”的方法来解决这个问题,如果你感兴趣的话,我可以给你展示一下……谢谢。查看一下您的工厂代码会很酷:),但这个问题并不重要。我只是想要一个更舒适的方法:)@Question3r我有一个旧的实现,创建一个临时记录器,将上下文名称作为参数。您可以在此处看到代码:。此后,我创建了一个新的日志记录包来为我处理它,您可以在存储库的最新版本中找到它。可能有一些用处:)下面是我能想到的获取函数名的最糟糕的方法<代码>常量堆栈=新错误();const functionName=stack.split('at')[2]。split('')[0]请原谅我:(