CentOS中Node.js日志管理方法
日志庫是Node.js日志管理的基礎,CentOS環境下常用以下庫:
PM2是Node.js進程管理工具,內置日志管理功能,操作簡便:
npm install pm2 -g
。pm2 start app.js --name my-node-app
(--name
指定應用名稱)。pm2 logs
;pm2 logs my-node-app
;pm2 logs --lines 1000
(顯示最近1000行)。ecosystem.config.js
文件自定義:module.exports = {
apps: [{
name: 'my-node-app',
script: 'app.js',
out_file: '/var/log/nodejs/my-app-out.log', // 標準輸出路徑
error_file: '/var/log/nodejs/my-app-err.log', // 錯誤輸出路徑
log_date_format: 'YYYY-MM-DD HH:mm Z', // 日志時間格式
log_rotation: {
period: '1d', // 每天輪轉
rotateAfterSize: '10M', // 文件超過10MB輪轉
keepFiles: 7 // 保留7天日志
}
}]
};
啟動時加載配置:pm2 start ecosystem.config.js
。logrotate是Linux系統自帶的日志輪轉工具,可自動切割、壓縮、刪除舊日志:
sudo yum install logrotate -y
。/etc/logrotate.d/
目錄下創建nodejs-app
文件,內容如下:/var/log/nodejs/*.log {
daily # 每天輪轉
rotate 7 # 保留7天日志
compress # 壓縮舊日志(.gz格式)
delaycompress # 延遲壓縮(避免當天日志被壓縮)
missingok # 日志文件不存在時不報錯
notifempty # 日志為空時不輪轉
create 0640 root adm # 創建新日志文件并設置權限
}
sudo logrotate -f /etc/logrotate.d/nodejs-app
(強制立即執行)。對于分布式系統或需要集中分析的場景,可將日志發送到集中式平臺:
winston-elasticsearch
傳輸器,將日志直接發送到Elasticsearch。合理設置日志級別可提高日志可用性:
level
參數設置,例如Winston:level: process.env.NODE_ENV === 'production' ? 'info' : 'debug'
(生產環境只記錄INFO及以上級別)。