以下是Ubuntu上Node.js日志的备份策略,可按需选择或组合使用:
logrotate工具(推荐)
sudo apt-get install logrotate/etc/logrotate.d/下创建配置文件(如nodejs),内容示例:/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
dateext
}
(参数说明:每天轮转,保留7天,压缩旧日志,自动截断原文件)PM2内置轮转(需使用PM2管理进程)
sudo npm install pm2 -gpm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 100M # 单个文件最大100MB
pm2 set pm2-logrotate:retain 30 # 保留30个文件
pm2 set pm2-logrotate:compress true # 压缩旧日志
手动脚本+定时任务(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
crontab -e,添加0 2 * * * /usr/local/bin/backup-node-logs.sh(每天凌晨2点执行)远程备份(rsync)
rsync -avz /var/log/nodejs/ user@remote-server:/backup/nodejs-logs/
可结合cron定时执行,或通过脚本自动化第三方日志库(如Winston)
npm install winston winston-daily-rotate-fileconst 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)。