温馨提示×

如何备份nodejs linux日志

小樊
43
2026-09-08 14:02:29
栏目: 编程语言

在 Linux 下备份 Node.js 日志,通常取决于你日志的存储方式(文件、stdout、第三方日志库、容器等)。下面按常见场景给你一套实用方案。


一、确认 Node.js 日志在哪里

常见日志位置:

  • 应用自己写的日志文件
    /var/log/myapp/
    /home/user/app/logs/
    
  • PM2 日志
    ~/.pm2/logs/
    
  • 系统服务(systemd)
    journalctl -u yourapp
    
  • Docker 容器日志
    /var/lib/docker/containers/
    

二、最基础的日志文件备份(推荐)

1️⃣ 手动备份

cp /var/log/myapp/app.log /backup/app-$(date +%F).log

2️⃣ 定时备份(crontab)

crontab -e

每天凌晨 2 点备份:

0 2 * * * cp /var/log/myapp/*.log /backup/

三、使用 logrotate(强烈推荐 ✅)

适合长期运行的服务

示例配置

sudo vim /etc/logrotate.d/nodeapp

内容:

/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

说明:

  • copytruncate:不重启 Node.js 也能切割日志(很重要)
  • compress:节省空间
  • rotate 7:保留 7 天

测试:

sudo logrotate -d /etc/logrotate.d/nodeapp

四、PM2 日志备份

查看日志位置

pm2 logs
pm2 info <app>

备份 PM2 日志

cp ~/.pm2/logs/* /backup/pm2/

PM2 + logrotate

PM2 官方支持:

pm2 install pm2-logrotate

配置示例:

pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7

五、systemd 服务日志备份

如果是 systemd 启动的 Node.js:

journalctl -u yourapp > /backup/yourapp-$(date +%F).log

定时备份:

0 3 * * * journalctl -u yourapp > /backup/yourapp-$(date +%F).log

六、Docker 中 Node.js 日志备份

方法 1:挂载日志目录

docker run -v /host/logs:/app/logs nodeapp

然后按普通文件备份。

方法 2:导出容器日志

docker logs mynodeapp > /backup/node-$(date +%F).log

七、云 / 远程备份(进阶)

  • 备份到对象存储(S3 / OSS / MinIO)
  • 使用 rsync
rsync -avz /var/log/myapp/ user@backup:/backup/myapp/

八、最佳实践建议 ✅

✅ 日志写入文件,而不是只打 console
✅ 使用 winston / pino 等日志库
✅ 一定要 copytruncate 或信号切割
✅ 日志和代码分离目录
✅ 定期清理旧日志


如果你愿意,可以告诉我:

  • Node.js 是怎么运行的(PM2 / systemd / Docker)
  • 日志是写在文件还是 stdout
  • Linux 发行版

我可以帮你写完整的备份脚本或配置

0