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。参考来源: