如何防止 Nest.js 将异常记录到控制台?

Gab*_*iel 5 exception graphql apollo-server nestjs

背景

我们用来ApolloHandler处理 Nest.js + GraphQL 应用程序中的异常。

问题

尽管ApolloHandler设法创建结构化的 GraphQL 错误响应,但每个异常(加上堆栈跟踪)也会生成控制台日志和记录器条目[ExceptionHandler],从而用数千个已托管的输入错误污染应用程序日志。

问题

如何设置 Nest.js 来抑制这些ApolloHandler异常?当然,非ApolloHandler例外情况应该保留记录。

小智 -2

创建您自己的自定义记录器来过滤掉这些消息,例如:


export class AppLogger extends Logger {

  error(message: string, trace: string, context?: string) {
    if (message !== 'Validations failed!') {
      super.error(message, trace, context)
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

并将其用作

app.useLogger(new AppLogger())
Run Code Online (Sandbox Code Playgroud)