温馨提示×

Ubuntu上Node.js日志的备份策略

小樊
56
2025-08-31 04:20:09
栏目: 编程语言

以下是Ubuntu上Node.js日志的备份策略,可按需选择或组合使用:

  1. logrotate工具(推荐)

    • 安装sudo apt-get install logrotate
    • 配置:在/etc/logrotate.d/下创建配置文件(如nodejs),内容示例:
      /var/log/nodejs/*.log {
          daily
          rotate 7
          compress
          missingok
          notifempty
          copytruncate
          dateext
      }
      
      (参数说明:每天轮转,保留7天,压缩旧日志,自动截断原文件)
  2. PM2内置轮转(需使用PM2管理进程)

    • 安装PM2sudo npm install pm2 -g
    • 启用轮转
      pm2 install pm2-logrotate
      pm2 set pm2-logrotate:max_size 100M  # 单个文件最大100MB
      pm2 set pm2-logrotate:retain 30      # 保留30个文件
      pm2 set pm2-logrotate:compress true  # 压缩旧日志
      
  3. 手动脚本+定时任务(cron)

    • 编写脚本(如/usr/local/bin/backup-node-logs.sh):
      #!/bin/bash
      LOG_DIR="/var/log/nodejs"
      BACKUP_DIR="/backup/nodejs-logs"
      TIMESTAMP=$(date +"%Y-%m-%d")
      mkdir -p "$BACKUP_DIR"
      tar -czvf "$BACKUP_DIR/nodejs-$TIMESTAMP.tar.gz" "$LOG_DIR"/*.log
      
    • 添加cron任务crontab -e,添加0 2 * * * /usr/local/bin/backup-node-logs.sh(每天凌晨2点执行)
  4. 远程备份(rsync)

    • 同步到远程服务器
      rsync -avz /var/log/nodejs/ user@remote-server:/backup/nodejs-logs/
      
      可结合cron定时执行,或通过脚本自动化
  5. 第三方日志库(如Winston)

    • 安装Winstonnpm install winston winston-daily-rotate-file
    • 配置轮转
      const winston = require('winston');
      const logger = winston.createLogger({
        transports: [
          new winston.transports.DailyRotateFile({
            filename: '/var/log/nodejs/app-%DATE%.log',
            datePattern: 'YYYY-MM-DD',
            zippedArchive: true,
            maxSize: '50m',
            maxFiles: '15d'
          })
        ]
      });
      

注意事项

  • 确保备份目录权限正确(如/backup目录属主为root,权限755)。
  • 定期测试备份文件是否可正常恢复。
  • 生产环境中建议结合logrotate与远程备份,避免单点故障。

0