繁体   English   中英

NestJs 创建用于记录的自定义服务 - 不打印 output

[英]NestJs creating a custom service for logging - not printing the output

我正在尝试创建一个将扩展 Logger 的 NestJs 服务。 但是,它没有打印所需的 output(例如,super.warn();有关详细信息,请参见下文)。 我相信我正在做的几乎是来自 nestjs 网站的教程,但我似乎无法让它工作。 https://docs.nestjs.com/techniques/logger#using-the-logger-for-application-logging

I want to use custom logging.
src
  - a module
     - a.service.ts
     - a.module.ts
  - log module
     - log.service.ts // my custom log service
     - log.module.ts
  - PlainLogger (no module, no @Injectable(), just a plain class)

A.service.ts(我正在运行a.service.spec.ts来测试日志的output)

a.service.ts

@Injectable()
export class AService {
 
private readonly plainLogger = new PlainLogger()

constructor(private logService: LogService) {
   this.logService.setContext("some context")
}   

aMethod() {
  // plainService.meow("some input") This behaves as expected
  this.logService.meow("some input"); 
 }   
}

我的 log.service.ts

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

    @Injectable({scope:Scope.TRANSIENT})
    export class LogService extends Logger {

    meow(message:string) {
       super.warn(message) // This does NOT get printed. My goal is to get this printed.
       Logger.warn("static warning") // This gets printed
       return 1337
    }
  }

从外观上看,super.warn(...) 似乎并没有在终端打印出日志,但是如果我使用PlainLogger,它基本上具有相同的方法(除了它只是一个没有任何模块的普通class,并且它没有 @Injectable 注释)作为我的自定义日志服务。

从我发布的教程链接中,似乎可以创建一个日志服务,但我不太确定出了什么问题。 任何见解将不胜感激。

事实证明,日志确实是通过调用服务打印的(例如,通过 controller 调用服务,但简单地运行规范(测试文件)似乎不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM