Linux中Node.js日志輪轉主要有以下幾種策略:
使用logrotate工具(系統級)
sudo apt-get install logrotate
(Debian/Ubuntu)或sudo yum install logrotate
(CentOS/RHEL)。/etc/logrotate.d/
下創建配置文件(如node-app
),指定日志路徑、輪轉周期(如daily
)、保留數量(如rotate 7
)、壓縮(compress
)等參數。sudo logrotate -f /etc/logrotate.d/node-app
手動觸發輪轉。使用PM2日志管理(進程級)
sudo npm install pm2 -g
。pm2 install pm2-logrotate
,并配置參數(如max_size
、retain
、compress
)。使用Node.js日志庫(應用級)
winston-daily-rotate-file
插件,通過代碼配置輪轉規則(如按天/按大小分割、壓縮、保留天數)。const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const logger = winston.createLogger({
transports: [
new DailyRotateFile({
filename: 'app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
})
]
});
```。
log4js
也支持按文件大小或時間輪轉。選擇建議:
logrotate
,適合多應用場景,配置簡單且與系統集成緊密。winston
,靈活性高,可定制化輪轉邏輯(如按業務模塊分割日志)。