Ubuntu系统下JS(Node.js)日志轮转主要通过logrotate工具实现,核心策略如下:
工具基础
logrotate
,用于定时轮转、压缩、删除旧日志,避免磁盘占满。/etc/logrotate.conf
(全局默认规则)、/etc/logrotate.d/
(自定义服务配置)。关键配置参数
daily
(每天)、weekly
(每周)、monthly
(每月),或按文件大小size 100M
(超过100MB触发)。rotate 7
(保留最近7个日志文件),超量自动删除。compress
(启用gzip压缩)、create 0640 root root
(新日志文件权限及属主)。missingok
(文件丢失不报错)、notifempty
(空文件不轮转)。针对Node.js的典型配置
/var/log/myapp/*.log
,配置示例:/var/log/myapp/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 root adm
postrotate
# 可选:重启应用或通知服务重新打开日志
# /bin/kill -HUP $(cat /var/run/myapp.pid 2>/dev/null)
endscript
}
该配置表示:每天轮转日志,保留14天,压缩旧文件,轮转后尝试重启应用以重新加载日志。执行与管理
/etc/cron.daily/logrotate
定时任务每日执行,无需手动干预。sudo logrotate -vf /etc/logrotate.d/myapp
验证配置是否正确。其他工具补充
pm2-logrotate
模块实现日志轮转,需在ecosystem.config.js
中配置log_rotate
参数。rsyslog
配置实现,但JS应用通常直接使用logrotate
。参考来源: