CentOS 上 Node.js 日志管理实用指南
一 日志输出与存放位置
- 直接运行 Node.js 时,默认输出到控制台;如需写入文件,可在代码中配置日志库,或使用重定向:例如运行命令为:node app.js > logs/app.log 2>&1。
- 使用 PM2 管理进程时,日志默认位于:/root/.pm2/logs/,常见文件名包含应用名及 -err.log、-out.log。
- 作为 systemd 服务运行时,可用 journalctl 查看服务日志,例如:journalctl -u your-nodejs-service-name -t。
- 常见日志目录还包括系统目录 /var/log/(如 messages、secure 等),不建议将应用日志直接写入系统日志目录,除非通过 syslog 等机制。
二 日志轮转与清理
三 日志级别与结构化
- 合理设置日志级别:开发环境可用 debug,生产环境建议 info/warn/error,避免产生过多日志影响性能与成本。
- 采用结构化日志(如 JSON)便于检索与分析,常用库包括 Winston、Pino、Bunyan、Log4js;可按级别分流输出到不同文件(如 error.log 与 combined.log)。
四 集中式日志与系统日志对接
- 集中式日志:将日志发送到 ELK Stack(Elasticsearch、Logstash、Kibana) 或 Graylog 等平台,便于检索、可视化与告警。
- 对接 syslog:使用 rsyslog 将日志发往本地或远程 syslog 服务;Node.js 侧可借助 winston-syslog 等传输器输出到 syslog。
- 作为 systemd 服务时,可将 StandardOutput/StandardError 设为 syslog 并通过 SyslogIdentifier 标识应用,统一纳入系统日志体系。
五 常用命令与快速排查
- 查看 systemd 服务日志:journalctl -u your-nodejs-service-name -t(按时间、服务名检索)。
- 查看 PM2 日志:pm2 logs your-app-name(实时 tail,支持按应用名过滤)。
- 验证 logrotate 配置:sudo logrotate -f /etc/logrotate.d/nodejs_app(强制运行一次以校验语法与行为)。