在 Linux 上清理 Node.js 日志,常见做法分 临时清理 和 长期管理 两类。下面按场景给你讲清楚。
rm -f /path/to/node.log
⚠️ 注意:
rm 后磁盘空间可能不会立即释放> /path/to/node.log
或
truncate -s 0 /path/to/node.log
这样进程还能继续写,不会出问题。
winston + winston-daily-rotate-fileconst transport = new DailyRotateFile({
filename: 'logs/app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxFiles: '14d', // 保留14天
maxSize: '20m'
});
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
然后清理:
pm2 flush # 清空所有日志
logrotate(最稳妥)示例 /etc/logrotate.d/nodejs:
/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
生效测试:
logrotate -d /etc/logrotate.d/nodejs
✅ copytruncate 对 Node 很友好(不重启进程)
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
清理:
docker system prune
| 问题 | 解决 |
|---|---|
| 删了文件磁盘没释放 | > file 或 `lsof |
| 日志无限增长 | 上 logrotate |
| PM2 日志爆炸 | pm2-logrotate |
| Docker 占满磁盘 | 设 log-size |
如果你愿意,可以告诉我:
我可以给你一套 直接可用的配置。