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

如何让rsyslog的imfile模块递归动态添加日志文件?

用rsyslog imfile模块递归监控子目录日志文件

你完全可以直接在rsyslog.conf里通过imfile模块实现动态递归配置,不需要依赖脚本生成静态文件列表——不过这个功能要求rsyslog版本在8.2006及以上,先确认你的版本:

rsyslogd -v

输出里能看到具体版本号,满足要求就可以按下面的步骤配置:

  1. 加载imfile模块
    在rsyslog.conf开头添加模块加载指令,同时设置轮询间隔(单位秒,按需调整):
module(load="imfile" PollingInterval="10")
  1. 配置递归监控规则
    添加input块,用**通配符实现递归匹配所有子目录下的.log文件:
input(
    type="imfile"
    File="/var/log/**/*.log"
    Tag="app-logs:"
    Severity="info"
    Facility="local0"
    PersistStateInterval="1000"
    ReadMode="2"
    reopenOnTruncate="on"
)

各参数说明:

  • File="/var/log/**/*.log":**表示递归匹配所有层级的子目录,精准定位所有.log文件
  • Tag:给这类日志打标记,方便后续过滤或转发时识别
  • Severity/Facility:自定义日志的级别和设备,可根据需求调整
  • PersistStateInterval:每处理1000行日志就保存一次读取位置,避免rsyslog重启后重复读取旧日志
  • ReadMode="2":按行读取日志,实时跟踪文件内容变化
  • reopenOnTruncate="on":当日志文件被截断(比如日志轮转)时自动重新打开,防止丢失新日志
  1. 验证并生效配置
    先检查配置文件语法是否正确:
rsyslogd -N1

如果没有报错,重启rsyslog服务让配置生效:

systemctl restart rsyslog

注意事项

  • 旧版本兼容:如果你的rsyslog版本低于8.2006,那就只能用你之前参考的脚本生成静态配置的方案,因为旧版本不支持**递归通配符
  • 性能优化:如果/var/log下的日志文件数量极多,建议适当调大PollingInterval,避免频繁轮询占用过多系统资源
  • 权限问题:确保rsyslog进程(通常是syslog用户)拥有所有目标.log文件的读取权限,否则会监控失败

内容的提问来源于stack exchange,提问作者mat.viguier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 12:07:27