首页 > 解决方案 > 如何防止 Nest.js 将异常记录到控制台?

问题描述

背景

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

问题

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

问题

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

标签: exceptiongraphqlnestjsapollo-server

解决方案


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


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())

推荐阅读