You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在生产环境中禁用Nuxt3应用的404错误日志?

解决Nuxt3生产环境H3框架记录爬虫404日志的问题

针对你遇到的爬虫引发大量404日志的情况,可以通过以下几种方式处理:

1. 自定义中间件过滤特定404请求

在server/middleware目录下创建ignore-404-logs.ts文件,添加如下代码:

export default defineEventHandler(async (event) => {
  event.node.res.on('finish', () => {
    if (event.node.res.statusCode === 404) {
      // 列出爬虫常访问的不存在路径,可根据实际日志补充
      const ignorePaths = [
        '/blog/wp-includes/wlwmanifest.xml',
        '/xmlrpc.php',
        '/wp-login.php',
        '/robots.txt'
      ]
      if (ignorePaths.some(path => event.path.includes(path))) {
        // 删除错误上下文,避免被日志系统捕获
        delete event.context.error
      }
    }
  })
})

这种方式可以精准过滤你不想记录的404路径,不会影响其他正常的404错误日志。

2. 调整Nuxt Nitro的日志配置

在nuxt.config.ts中修改日志过滤规则,直接忽略特定的404日志:

export default defineNuxtConfig({
  nitro: {
    logger: {
      filter: (log) => {
        // 过滤包含"Page not found:"且路径属于爬虫常见路径的日志
        if (log.message?.includes('Page not found:')) {
          const targetPath = log.data?.path || log.url
          if (targetPath && ['//blog/wp-includes/wlwmanifest.xml', '/xmlrpc.php'].some(p => targetPath.includes(p))) {
            return false
          }
        }
        // 保留其他日志
        return true
      }
    }
  }
})

如果想全局降低日志级别,也可以将logLevel设置为warn(生产环境),这样info级别的404日志会被隐藏:

export default defineNuxtConfig({
  nitro: {
    logLevel: process.env.NODE_ENV === 'production' ? 'warn' : 'info'
  }
})

3. 重写H3的错误处理逻辑

直接覆盖H3的默认错误处理,只记录非404的错误:

export default defineNuxtConfig({
  nitro: {
    h3: {
      onError: (error, event) => {
        // 仅处理状态码不是404的错误
        if (error.statusCode !== 404) {
          // 这里可以保留原有的错误日志逻辑,比如输出到控制台或监控服务
          console.error('Server error:', error)
        }
        // 404错误不做日志记录
      }
    }
  }
})

这种方式会完全禁用所有404错误的日志,适合不需要记录任何404日志的场景。

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:52:17