请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Logger重构后异常过滤器使用logger的问题

1、为什么给HttpExceptionFilter异常过滤器传递的只能是Logger而不能是LoggerService?
图片描述
2、在HttpExceptionFilter异常过滤器的构造函数中注入Logger是否需要使用@Inject(WINSTON_MODULE_NEST_PROVIDER)?为什么不需要注入?
图片描述

正在回答 回答被采纳积分+3

1回答

Brian 2023-07-24 00:14:59

1、为什么给HttpExceptionFilter异常过滤器传递的只能是Logger而不能是LoggerService?

——你的代码从哪来的?视频中,我们讲的是如下的内容吧:

https://img1.sycdn.imooc.com//szimg/64bd517b09cc3c7810710189.jpg

注意:

https://img1.sycdn.imooc.com//szimg/64bd51d10965fad512560949.jpg

我们定义的HTTPException其中Contructor即该类接收一个LoggerService的类,没有说“只能是Logger而不能是LoggerService”,只要是LoggerService的类及子类都行。


2、在HttpExceptionFilter异常过滤器的构造函数中注入Logger是否需要使用@Inject(WINSTON_MODULE_NEST_PROVIDER)?为什么不需要注入?

——如果使用winston去打印,则需要使用@Inject(WINSTON_MODULE_NEST_PROVIDER);如果不加前面的装饰器,将会使用默认的Logger,即nestjs的。

0 回复 有任何疑惑可以回复我~
  • 提问者 城北丶 #1
    关于第一个问题,我传入LoggerService就会报错,错误为:(“LoggerService”仅表示类型,但在此处却作为值使用。)HttpExceptionFilter异常过滤器跟老师的代码一样,区别就是我在控制器把这个过滤器作为路由级别的而已。
    关于第二个问题,在异常过滤器中我不使用@Inject(WINSTON_MODULE_NEST_PROVIDER)对LoggerService进行注解依然打印的是NestWinston的日志信息。
    回复 有任何疑惑可以回复我~ 2023-07-24 09:34:43
  • Brian 回复 提问者 城北丶 #2
    有代码吗?
    回复 有任何疑惑可以回复我~ 2023-07-28 22:54:05
  • 提问者 城北丶 回复 Brian #3
    就是图一的代码,我在路由上使用@UseFilters(new HttpExceptionFilter(Logger))才能正常使用HttpExceptionFilter,如果传入的是LoggerService就会报错,我不明白这个原理。
    回复 有任何疑惑可以回复我~ 2023-07-29 09:04:44
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信