在 Linux 上备份 Node.js 日志,常见做法取决于日志的存储方式(文件、stdout、systemd、Docker 等)。下面按最常见场景给你一套实用方案。
/var/log/myapp/app.logsystemd 管理,日志在 journalctlcp /var/log/myapp/app.log /backup/app-$(date +%F).log
或打包:
tar czf /backup/node-logs-$(date +%F).tar.gz /var/log/myapp/
cron编辑定时任务:
crontab -e
每天凌晨 2 点备份:
0 2 * * * tar czf /backup/node-logs-$(date +\%F).tar.gz /var/log/myapp/
%在 cron 中需要转义
不要只备份,不轮转日志,否则日志会无限变大。
logrotate(强烈推荐)sudo vim /etc/logrotate.d/nodeapp
/var/log/myapp/*.log {
daily
rotate 30
compress
missingok
notifempty
copytruncate
}
✅ 含义:
daily:每天轮转rotate 30:保留 30 天compress:压缩旧日志copytruncate:不重启 Node 也能生效PM2 默认日志位置:
~/.pm2/logs/
备份:
tar czf /backup/pm2-logs-$(date +%F).tar.gz ~/.pm2/logs/
✅ 建议配合 PM2 的日志轮转模块:
pm2 install pm2-logrotate
查看日志:
journalctl -u mynodeapp > /backup/node-$(date +%F).log
或导出为结构化格式:
journalctl -u mynodeapp -o json > /backup/node.json
Docker 默认位置:
/var/lib/docker/containers/
查看:
docker logs 容器名 > /backup/container.log
✅ 生产环境建议:
json-file + logrotatersyncrsync -avz /var/log/myapp/ user@backup-server:/backup/node-logs/
| 项目 | 建议 |
|---|---|
| 日志方式 | 文件 + logrotate |
| 日志级别 | info / warn / error 分开 |
| 备份方式 | cron + rsync |
| 保留时间 | 30~90 天 |
| 容器环境 | 输出到 stdout + 日志采集 |
你可以告诉我:
我可以直接给你一套可复制粘贴的完整配置。