在Linux系统中,Node.js应用程序的日志轮转可以通过多种方式实现。以下是一些常见的方法:
logrotate 工具logrotate 是一个系统工具,用于管理日志文件的轮转和压缩。你可以配置 logrotate 来处理Node.js应用程序的日志文件。
创建一个 logrotate 配置文件:
在 /etc/logrotate.d/ 目录下创建一个新的配置文件,例如 nodejs。
sudo nano /etc/logrotate.d/nodejs
配置 logrotate:
在配置文件中添加以下内容:
/path/to/your/nodejs/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
}
解释:
/path/to/your/nodejs/logs/*.log:指定要轮转的日志文件路径。daily:每天轮转一次日志。rotate 7:保留7个轮转的日志文件。compress:压缩旧的日志文件。delaycompress:延迟压缩,直到下一次轮转。missingok:如果日志文件不存在,不会报错。notifempty:如果日志文件为空,不进行轮转。create 640 root adm:创建新的日志文件,权限为640,属主为root,属组为adm。测试配置:
你可以手动测试 logrotate 配置是否正确:
sudo logrotate -f /etc/logrotate.d/nodejs
pm2 管理Node.js应用如果你使用 pm2 来管理Node.js应用程序,它内置了日志轮转功能。
安装 pm2(如果尚未安装):
npm install pm2 -g
启动你的Node.js应用并启用日志轮转:
pm2 start app.js --name my-app --log-date-format "YYYY-MM-DD HH:mm Z"
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
解释:
--log-date-format "YYYY-MM-DD HH:mm Z":设置日志日期格式。pm2-logrotate:max_size 10M:设置单个日志文件的最大大小为10MB。pm2-logrotate:retain 7:保留7个轮转的日志文件。你也可以编写自定义脚本来实现日志轮转。例如,使用 cron 定时任务来压缩和移动日志文件。
创建一个日志轮转脚本:
sudo nano /usr/local/bin/logrotate-nodejs.sh
添加以下内容:
#!/bin/bash
LOG_DIR="/path/to/your/nodejs/logs"
LOG_FILES=$(ls $LOG_DIR/*.log)
for LOG_FILE in $LOG_FILES; do
gzip $LOG_FILE
mv ${LOG_FILE}.gz ${LOG_FILE}_$(date +%Y%m%d%H%M%S).gz
done
赋予脚本执行权限:
sudo chmod +x /usr/local/bin/logrotate-nodejs.sh
设置 cron 定时任务:
编辑 crontab 文件:
crontab -e
添加以下行以每天凌晨1点执行日志轮转脚本:
0 1 * * * /usr/local/bin/logrotate-nodejs.sh
通过以上方法,你可以有效地管理Node.js应用程序的日志文件,确保日志文件不会无限增长,并且可以方便地进行归档和压缩。