在 Ubuntu 上 Node.js 日志把磁盘写满,通常不是 Node.js 本身的问题,而是运行方式、日志配置或系统机制导致的。下面按常见原因给你梳理:
console.log / console.error 写太多✅ 检查:
du -sh /var/log/*
du -sh ~/.npm ~/.pm2/logs
如果你用 PM2 跑 Node.js:
~/.pm2/logs/✅ 解决:
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
如果是 systemd 启动 Node.js:
journalctl -u your-node-service
journald 默认可能不限制大小
✅ 查看:
journalctl --disk-usage
✅ 限制大小(编辑 /etc/systemd/journald.conf):
SystemMaxUse=500M
SystemKeepFree=1G
然后:
systemctl restart systemd-journald
Ubuntu 用 logrotate 管理日志,但:
✅ 示例 /etc/logrotate.d/nodejs:
/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
✅ 检查:
pm2 logs
journalctl -u node
✅ 限制:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
# 看哪个目录最大
du -h /var/log | sort -h
# 看实时写入
sudo lsof | grep log
✅ 不要直接 console.log 生产日志
✅ 用 winston / pino 等日志库
✅ 一定要配置 logrotate 或 pm2-logrotate
✅ systemd / docker 都要限制日志大小
如果你愿意,可以告诉我:
我可以帮你精确定位并给一套配置。