首页/系统/信创系统运维速查/rsyslog 基础配置与日志分流
服务与运维65 条

rsyslog 基础配置与日志分流

传统文本日志由 rsyslog 落盘:主配置引入 /etc/rsyslog.d/*.conf,按 facility.severity 规则分流到不同文件,改完重启 rsyslog 生效。

信创系统运维速查系统更新于 2026-10-13

rsyslog 是什么

rsyslog 负责把系统与应用日志按规则写到文件或转发出去。主配置 /etc/rsyslog.conf 会用包含语句引入 /etc/rsyslog.d/ 下的片段,所以自定义规则通常写成该目录里的独立文件,按文件名前缀排序加载。规则语法是选择器加动作,选择器由来源类别与级别两部分组成,动作为落文件、转发或停止处理。

基本信息

适用平台RPM 系与 DEB 系通用(包名 rsyslog)
主配置/etc/rsyslog.conf
自定义目录/etc/rsyslog.d/*.conf
生效方式systemctl restart rsyslog
语法检查rsyslogd -N1

典型使用场景

  • 把某个应用的日志单独落到独立文件,便于分析与轮转
  • 按级别过滤,只把 err 以上级别单独留存或告警
  • 把认证类日志分到安全团队可读的文件
  • 排障时临时调大某模块日志级别,事后恢复
  • 与 logrotate 配合控制文件大小与保留周期

分流规则示例

分流规则示例
# /etc/rsyslog.d/10-myapp.conf
if $programname == 'myapp' then /var/log/myapp.log   # 按程序名单独落文件
& stop                                              # 命中后停止,避免重复落盘
authpriv.*                       /var/log/secure     # 认证类日志
*.info;mail.none;authpriv.none;cron.none  /var/log/messages   # 综合日志排除噪音
# 生效与验证
rsyslogd -N1                       # 语法检查,看结尾是否成功
systemctl restart rsyslog          # 重载配置
logger -p user.info 'rsyslog test' # 造一条测试日志
tail -5 /var/log/messages          # 确认落地

选择器怎么读

写法来源类别级别范围
authpriv.*认证与授权全部级别
*.info所有来源info 及以上
mail.none邮件相关不记录
cron.err计划任务err 及以上
local0.debug自定义本地通道debug 及以上
落点对照:RPM 系常见 messages、secure、cron、maillog,DEB 系对应 syslog、auth.log、cron.log;应用日志可以走 local0 到 local7 这些本地通道,避免和系统日志混在一起。

动作写法对照

动作写法说明
落文件/var/log/xx.log路径前加减号表示异步写入,降低丢日志风险
转发@@10.0.0.9:514两个 @ 表示走 TCP,一个 @ 表示走 UDP
停止处理& stop命中后不再匹配后续规则
设置模板$template 名称,格式统一日志行格式,便于集中分析
同一条日志可能同时命中多条规则并按顺序多次落盘;出现重复记录时先核对规则顺序与有无停止处理,再决定精简哪一条。

易错点

  • 自定义规则不写 & stop:同一条日志继续匹配后续规则,产生重复记录
  • 改完只 reload 不 restart 或不做验证:部分变更需要重启才生效,改完必须 tail 确认
  • 新建日志文件的权限与属主不符预期,其他程序读不到,排查先看文件权限
  • 把 rsyslog 与 journald 的数据混用:rsyslog 停了 journald 仍在写,结论要注明数据来源
  • 直接删掉 /var/log 下的大日志文件:被进程持有的句柄仍占磁盘空间,正确做法是走 logrotate 或清空文件内容

数据来源与参考

  • man 5 rsyslog.conf
  • rsyslog 官方文档(配置基础)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌