NestJs 创建用于记录的自定义服务 - 不打印输出
Posted
技术标签:
【中文标题】NestJs 创建用于记录的自定义服务 - 不打印输出【英文标题】:NestJs creating a custom service for logging - not printing the output 【发布时间】:2021-07-12 00:42:42 【问题描述】:我正在尝试创建一个将扩展 Logger 的 NestJs 服务。然而,它没有打印所需的输出(例如,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 来测试日志的输出)
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,基本上是一样的方法(除了它只是一个没有任何模块的普通类,并且没有@Injectable注解)作为我的自定义日志服务。
从我发布的教程链接中,似乎可以创建日志服务,但我不太确定出了什么问题。任何见解将不胜感激。
【问题讨论】:
【参考方案1】:事实证明,日志确实是通过调用服务来打印的(例如,通过控制器调用服务,但简单地运行规范(测试文件)似乎不起作用。
【讨论】:
以上是关于NestJs 创建用于记录的自定义服务 - 不打印输出的主要内容,如果未能解决你的问题,请参考以下文章
HTTPS 不适用于 Amazon Cloudfront 中的自定义域