在 Ubuntu 上清理 Node.js 日志,要分几种常见场景。下面按最常见 → 最推荐的方式给你说明,并给出可直接用的命令。
常见路径:
/var/log/myapp/
/home/ubuntu/app/logs/
./logs/
常见文件名:
app.log
error.log
combined.log
rm -f /var/log/myapp/*.log
truncate -s 0 /var/log/myapp/app.log
✅ 适合临时救急
❌ 不适合生产环境
logrotate(✅ 强烈推荐)这是 Ubuntu 官方推荐方式。
which logrotate
sudo nano /etc/logrotate.d/myapp
示例配置(✅ 直接用):
/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 ubuntu ubuntu
postrotate
systemctl reload myapp > /dev/null 2>&1 || true
endscript
}
| 参数 | 说明 |
|---|---|
| daily | 每天轮转 |
| rotate 7 | 保留 7 天 |
| compress | gzip 压缩 |
| missingok | 文件不存在也不报错 |
| notifempty | 空文件不轮转 |
| postrotate | 重启/重载应用 |
sudo logrotate -d /etc/logrotate.d/myapp
正式执行:
sudo logrotate /etc/logrotate.d/myapp
~/.pm2/logs/
pm2 flush
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
docker system prune
docker logs --tail 100 <container_id>
kubectl logs <pod> --tail=100
日志由 容器运行时自动清理。
✅ 不要手动 rm 日志
✅ 使用 logrotate 或 pm2-logrotate
✅ 日志按日期切割
✅ 定期压缩 + 定期删除
| 场景 | 推荐方式 |
|---|---|
| 普通 Node 应用 | logrotate |
| PM2 | pm2-logrotate |
| Docker | 容器日志策略 |
| 临时清理 | truncate / flush |
如果你愿意,可以告诉我:
我可以帮你写一套 完全可直接用的配置。