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及以上级别)。