在 Ubuntu 上清理 Node.js 日志,取决于日志存在哪里、用什么方式运行的 Node.js。下面按常见场景给你一套完整做法(从简单到规范)。
/var/log/your-app/
~/your-app/logs/
~/.pm2/logs/
journalctl
/var/log/nginx/
sudo rm -f /var/log/your-app/*.log
⚠️ 注意:如果 Node.js 进程正在写入该文件,直接 rm 可能导致:
sudo truncate -s 0 /var/log/your-app/app.log
或
sudo echo > /var/log/your-app/app.log
✅ 优点:
pm2 logs
pm2 flush
或手动清空:
truncate -s 0 ~/.pm2/logs/*.log
pm2 install pm2-logrotate
然后配置:
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
journalctl -u your-node-service -f
sudo journalctl --vacuum-time=7d
或限制大小:
sudo journalctl --vacuum-size=500M
创建配置:
sudo nano /etc/logrotate.d/node-app
示例:
/var/log/your-app/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
说明:
copytruncate:不重启进程rotate 7:保留 7 天compress:自动压缩测试:
sudo logrotate -d /etc/logrotate.d/node-app
推荐:
winstonpino示例(winston):
new winston.transports.File({
filename: 'app.log',
maxsize: 10485760, // 10MB
maxFiles: 5
})
df -h
du -sh /var/log/*
找出大文件:
find /var/log -type f -size +100M
| 场景 | 推荐做法 |
|---|---|
| 临时清理 | truncate -s 0 |
| PM2 | pm2 flush + pm2-logrotate |
| systemd | journalctl --vacuum |
| 生产环境 | logrotate |
| 新项目 | winston / pino |
如果你愿意,可以告诉我:
我可以给你精确命令,一步到位 ✅