在 Ubuntu 上 Node.js 日志过大,通常不是 Node.js 本身的问题,而是日志策略、运行方式或框架配置不当导致的。下面按常见原因 → 对应解决方案给你一个系统排查清单。
现象
/var/log、~/.pm2/logs、/app/logs 下日志文件不断变大原因
pm2 / forever / docker 时尤其常见✅ 解决方案
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
sudo vim /etc/logrotate.d/node-app
示例:
/var/log/node/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
现象
原因
console.log✅ 解决方案
console.logif (process.env.NODE_ENV === 'production') {
console.log = () => {};
}
常见问题
✅ Winston 正确示例
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
transports: [
new winston.transports.File({
filename: 'app.log',
maxsize: 10 * 1024 * 1024, // 10MB
maxFiles: 5,
}),
],
});
现象
原因
✅ 解决方案
process.on('uncaughtException', err => {
logger.error('uncaughtException', err);
});
process.on('unhandledRejection', err => {
logger.error('unhandledRejection', err);
});
现象
/var/lib/docker/containers 巨大原因
✅ 解决方案
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
然后重启 Docker。
现象
原因
/var/log/nginx/access.log 太大✅ 解决方案
sudo truncate -s 0 /var/log/nginx/access.log
并配置 nginx logrotate。
du -sh /var/log/*
du -sh ~/.pm2/logs/*
tail -f app.log
df -h
✅ 基本组合
info / warn / error你可以直接贴出:
我可以 直接给你一份可复制的配置方案 ✅