在 Debian 上备份 Node.js 日志,核心思路是找到日志文件位置 → 定期复制/压缩 → 可加轮转和自动任务。下面分几种常见情况说明。
常见位置有:
应用自己写的日志文件
/var/log/yourapp/
/home/user/app/logs/
./logs/app.log
PM2 管理的日志
~/.pm2/logs/
/root/.pm2/logs/
systemd 服务日志(推荐查看方式)
journalctl -u yourapp.service
Nginx / 反向代理日志(如果有)
/var/log/nginx/
cp /var/log/yourapp/app.log /backup/app-log-$(date +%F).log
tar czf /backup/nodejs-logs-$(date +%F).tar.gz /var/log/yourapp
Debian 自带 logrotate,适合自动轮转 + 备份。
sudo nano /etc/logrotate.d/nodejs
内容示例:
/var/log/yourapp/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
copytruncate
}
说明:
copytruncate:不重启 Node.js 也能截断日志(很重要)compress:自动 gziprotate 14:保留 14 天测试:
sudo logrotate -d /etc/logrotate.d/nodejs
pm2 logs
pm2 info yourapp
tar czf pm2-logs-$(date +%F).tar.gz ~/.pm2/logs
pm2 install pm2-logrotate
配置示例:
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
crontab -e
每天凌晨 2 点备份:
0 2 * * * tar czf /backup/nodejs-logs-$(date +\%F).tar.gz /var/log/yourapp
不能直接复制文件,用导出方式:
journalctl -u yourapp.service > /backup/yourapp-$(date +%F).log
或二进制备份:
journalctl -u yourapp.service --output=export > /backup/yourapp.journal
winston / pino 写文件如果你愿意,可以告诉我:
我可以给你一套可直接用的备份脚本。