以下是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 -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 # 壓縮舊日志
手動腳本+定時任務(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-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
)。