以下是Ubuntu上Node.js日志管理的實用技巧:
選擇日志庫
winston
、pino
等庫,支持日志分級、格式化及輪轉,如winston-daily-rotate-file
插件可按日期切割日志。winston
配置):const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.Console({ format: winston.format.simple() })
]
});
日志輪轉與清理
logrotate
配置自動切割、壓縮舊日志,保留7-30天記錄,避免磁盤占滿。
/etc/logrotate.d/nodejs
):/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
create 0640 root adm
}
winston-daily-rotate-file
或pm2
內置輪轉功能,按文件大小或時間切割。集中化日志管理
性能優化
winston
的異步傳輸),避免阻塞主線程。進程管理輔助
pm2
管理應用時,啟用內置日志輪轉并配置保留策略:pm2 set pm2-logrotate:max_size 10M # 單個文件最大10MB
pm2 set pm2-logrotate:retain 7 # 保留7個文件
日志級別控制
warn
或error
,減少冗余日志。工具推薦:優先使用logrotate
(系統級)或pm2
(進程級)管理日志輪轉,搭配winston
/pino
實現結構化日志記錄。