在 Debian 系统下,Node.js 的日志清理方式取决于日志的存储位置和方式。下面按常见场景给你一套完整、可操作的方案。
/var/log/myapp/
/home/user/app/logs/
~/.pm2/logs/
journalctl
docker logs
rm -f /path/to/app.log
⚠️ 如果 Node.js 仍在写入该文件,可能出现:
> /path/to/app.log
或
truncate -s 0 /path/to/app.log
✅ 不会中断 Node.js 进程
✅ 立即释放磁盘空间
pm2 logs
pm2 logs --lines 50
pm2 flush
pm2 install pm2-logrotate
配置示例:
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
pm2 set pm2-logrotate:compress true
✅ 自动轮转、压缩、清理
journalctl -u node-app.service
sudo journalctl --vacuum-time=7d
sudo journalctl --vacuum-size=500M
编辑:
sudo vim /etc/systemd/journald.conf
SystemMaxUse=500M
MaxRetentionSec=7day
然后:
sudo systemctl restart systemd-journald
sudo vim /etc/logrotate.d/node-app
/var/log/node-app/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
copytruncate
}
✅ copytruncate 对 Node.js 非常友好
✅ 无需重启服务
docker logs <container_id>
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
然后重启 Docker。
console.log 直接输出到文件df -h
du -sh /var/log/*
查找大日志:
find / -type f -name "*.log" -size +100M
| 场景 | 推荐方式 |
|---|---|
| PM2 | pm2 flush + pm2-logrotate |
| 系统服务 | journalctl --vacuum |
| 文件日志 | logrotate |
| Docker | Docker log-opt |
| 临时清理 | > app.log |
如果你愿意,可以告诉我:
我可以给你完全定制化的清理方案 ✅