以下是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实现结构化日志记录。