如何用rsyslog(面向对象语法)模拟BusyBox syslogd本地日志轮转
用rsyslog面向对象语法模拟BusyBox syslogd的日志轮转行为
BusyBox syslogd的轮转规则回顾
BusyBox的syslogd通过以下参数控制本地日志轮转:
-s SIZE:单个日志文件的最大容量(单位KB,默认200KB,设为0关闭轮转)-b N:保留的轮转日志文件数量(默认1,最大99,设为0则自动清理旧文件)
示例命令:
syslogd -n -s 10240 -b 3
该配置会生成以下日志文件,当/var/log/messages达到10MB(10240KB)时触发轮转,保留3份历史文件:
/var/log/messages /var/log/messages.0 /var/log/messages.1 /var/log/messages.2
用rsyslog面向对象语法实现相同效果
完全可行,通过rsyslog的omfile模块(输出到文件)的高级参数即可模拟该行为,以下是具体配置:
# 加载omfile模块 module(load="omfile") # 配置日志输出与轮转规则 action( type="omfile" file="/var/log/messages" # 对应BusyBox的-s 10240(10240KB=10M) size="10M" # 对应BusyBox的-b 3,保留3份轮转文件 rotate="3" # 设置轮转文件后缀为.N,与BusyBox命名规则一致 fileSuffix=".%i" # 启用按文件大小触发轮转 rotateOnSize="on" # 轮转后继续写入新的主日志文件 stopWritingOnRotate="off" # 可选:设置文件权限与属主 fileOwner="root" fileGroup="adm" fileCreateMode="0640" )
参数说明
size:指定单日志文件的最大容量,支持K/M/G单位,需注意与BusyBox的KB单位转换(例:10M对应10240KB)rotate:设置保留的轮转文件数量,设为3时会生成.0/.1/.2三个历史文件,与BusyBox的-b 3行为一致fileSuffix=".%i":这是匹配BusyBox命名格式的关键,%i会被替换为递增的数字序号rotateOnSize="on":强制rsyslog在文件达到指定大小时立即轮转,而非依赖时间触发
注意事项
- 需确保rsyslog版本≥8.30,该版本及以上的
omfile模块才支持上述轮转参数 - 无需额外配置
logrotate,rsyslog自身会处理文件轮转与旧文件清理
内容的提问来源于stack exchange,提问作者aicastell
相关产品推荐
相关产品推荐

