【问题标题】:How do I prevent Nest.js from logging an exception to the console?如何防止 Nest.js 将异常记录到控制台?
【发布时间】:2021-02-11 10:21:46
【问题描述】:
背景
我们使用ApolloHandler 来处理我们的 Nest.js + GraphQL 应用程序中的异常。
问题
尽管ApolloHandler 设法创建结构化的 GraphQL 错误响应,但每个异常(加上它的堆栈跟踪)也会生成控制台日志和记录器条目[ExceptionHandler],从而用数千个已管理的输入错误污染应用程序日志。
问题
如何设置 Nest.js 来抑制那些 ApolloHandler 异常?当然,非ApolloHandler 异常应保持记录。
【问题讨论】:
标签:
exception
graphql
nestjs
apollo-server
【解决方案1】:
创建您自己的自定义记录器以过滤掉这些消息,例如:
export class AppLogger extends Logger {
error(message: string, trace: string, context?: string) {
if (message !== 'Validations failed!') {
super.error(message, trace, context)
}
}
}
并将其用作
app.useLogger(new AppLogger())