在 Linux 下清理 Node.js 日志,常见做法分为手动清理、自动轮转(推荐)和代码层控制三类。下面按场景说明。
rm -f /path/to/node.log
⚠️ 注意:
如果 Node 进程是用 fs.appendFile 或 winston 等一直持有文件句柄,直接 rm 后磁盘空间不会释放,需要重启进程或让程序重新打开文件。
> /path/to/node.log
# 或
truncate -s 0 /path/to/node.log
✅ 推荐:不会断句柄,进程可继续写。
编辑配置:
sudo vim /etc/logrotate.d/nodejs
示例:
/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
说明:
copytruncate:先复制再清空,不重启 Node 进程rotate 7:保留 7 份compress:压缩旧日志测试:
logrotate -d /etc/logrotate.d/nodejs
const transport = new (require('winston-daily-rotate-file'))({
filename: 'logs/app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxFiles: '14d',
maxSize: '20m'
});
✅ 自动按天/大小切割,无需手动清
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
console.log 打生产日志如果你愿意,可以告诉我:
我可以给你精准配置。