温馨提示×

ubuntu nodejs日志为何过多

小樊
44
2026-10-15 06:23:53
栏目: 编程语言

在 Ubuntu 上,Node.js 日志过多通常不是 Node 本身的问题,而是运行方式、框架配置或系统服务管理导致的。下面按常见原因逐条说明,并给出对应解决办法。


一、最常见原因

1. PM2 / 进程管理器不断写日志

如果你用 PM2 启动 Node 服务:

pm2 start app.js

PM2 默认会记录:

  • out.log(标准输出)
  • err.log(错误输出)

日志过多的原因:

  • console.log 太多
  • 请求量大
  • 未做日志切割

✅ 解决:

pm2 flush          # 清空日志
pm2 install pm2-logrotate

并在 ecosystem.config.js 中限制日志大小。


2. systemd 日志膨胀(非常常见)

如果你用 systemd 启动 Node:

[Service]
ExecStart=/usr/bin/node /app/app.js

Node 的 console.log 会被 journald 捕获:

journalctl -u your-node.service

✅ 查看日志大小:

journalctl --disk-usage

✅ 解决:

  • 限制 journal 大小
sudo nano /etc/systemd/journald.conf
SystemMaxUse=200M
MaxRetentionSec=7day

然后:

sudo systemctl restart systemd-journald

3. Node 应用本身打印日志太多

常见问题:

  • 每个请求都 console.log
  • 第三方库 DEBUG 模式开启

✅ 检查:

process.env.DEBUG

✅ 解决:

  • 使用日志库(winston / pino)
  • 生产环境关闭 debug
DEBUG=

4. 未捕获异常导致重复重启 + 日志

例如:

  • 端口占用
  • 数据库连接失败

PM2 / systemd 会不断重启 Node,导致错误日志爆炸。

✅ 查看错误:

pm2 logs
# 或
journalctl -u node -n 100

5. Nginx / 反向代理日志 + Node 日志叠加

如果:

  • Nginx 记录 access log
  • Node 也记录请求

日志会翻倍。

✅ 建议:

  • Node 只记录错误
  • Nginx 记录访问

二、快速排查清单(推荐顺序)

# 1. 看哪个日志最大
du -h /var/log | sort -h

# 2. 看 systemd 日志
journalctl --disk-usage

# 3. 看 PM2 日志
pm2 logs

# 4. 看 Node 是否有大量 console.log
grep -R "console.log" /your/app

三、生产环境最佳实践

  • ✅ 不用 console.log
  • ✅ 使用 pino / winston
  • ✅ 日志分级(info / warn / error)
  • ✅ 日志轮转(logrotate / pm2-logrotate)
  • ✅ 限制 journald 大小

如果你愿意,可以告诉我:

  • 用 PM2 还是 systemd
  • 是否用了 Express / NestJS
  • 日志路径或示例内容

我可以帮你精准定位是哪一类日志过多。

0 踩