You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:39:47