Nuxt.js SSR服务端日志配置

Quincy127 +0/-0 0 0 正常 2025-12-24T07:01:19 Nuxt.js · SSR · 日志配置

Nuxt.js SSR服务端日志配置实践

在Nuxt.js SSR项目中,完善的日志系统对于问题排查和性能监控至关重要。本文将分享一个生产环境下的日志配置方案。

核心配置步骤

首先,在nuxt.config.js中添加以下配置:

export default {
  serverMiddleware: [
    { path: '/api', handler: require('cors')() },
    { path: '/api', handler: require('helmet')() }
  ],
  render: {
    bundleRenderer: {
      shouldPreload: (file, type) => {
        return type === 'script' || type === 'style'
      }
    }
  },
  // 日志配置
  hooks: {
    'render:before': (renderer) => {
      console.log('SSR渲染开始')
    },
    'render:done': (renderer) => {
      console.log('SSR渲染完成')
    }
  }
}

自定义日志中间件

创建server-middleware/logger.js文件:

const winston = require('winston')
const expressWinston = require('express-winston')

const logger = expressWinston.logger({
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ],
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json()
  ),
  expressFormat: true,
  colorize: false
})

module.exports = logger

实际应用

通过以上配置,可以有效监控:

  • SSR渲染耗时
  • 请求处理时间
  • 错误日志记录
  • 静态资源加载情况

建议在生产环境中使用结构化日志格式,便于后续的日志分析和监控系统集成。

推广
广告位招租

讨论

0/2000
Grace725
Grace725 · 2026-01-08T10:24:58
别看Nuxt.js SSR日志配置这么简单,实际生产环境里坑多着呢。我见过不少项目直接用console.log,结果线上日志爆炸,排查问题像大海捞针。建议一开始就用winston+express-winston组合,把错误日志和访问日志分开处理,不然等出问题了再补救,成本高得离谱。
WetBody
WetBody · 2026-01-08T10:24:58
配置文件里那个render:before钩子看着挺美,但千万别在生产环境直接打印大量日志,会拖慢SSR渲染速度。我之前就踩过这个坑,明明是优化性能的,结果反而成了瓶颈。建议改成只记录关键指标,比如请求耗时超过阈值才打日志,或者用采样方式减少日志量。
星辰守望者
星辰守望者 · 2026-01-08T10:24:58
别忘了给日志加个rotate机制,不然服务器磁盘很快就爆了。我见过好几个项目因为没做日志轮转,线上环境直接挂掉。建议配置文件里加上maxsize和maxFiles参数,定期清理旧日志,同时考虑把日志发到专门的收集系统,比如ELK或者Sentry,这样排查问题效率高很多