模版格式化日志
下面这两行配置表示将所有日志消息按照MyFormat模板格式写入/var/log/mylogfile.log文件
$template MyFormat, "%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"
*.* /var/log/mylogfile.log;MyFormat
- $template:开始使用模板的关键字
- MyFormat:模板的名字
- %%:百分号包含的是属性名,每个属性名相当于一段正则
- %timegenerated%:生成日志的时间
- %HOSTNAME%:主机名
- %syslogtag%:syslog 标签
- %msg%:日志消息内容
- %msg:::drop-last-lf%:日志消息内容,去掉最后一个换行符
- *.*:事件类型和等级
- /var/log/mylogfile.log:写入路径
除上面之外的属性,常用的还有
- %pri%:优先级
- %protocol-version%:协议版本
- %timestamp%:时间戳
- %app-name%:应用名称
- %procid%:进程ID
- %msgid%:消息ID
- %structured-data%:结构化数据
- %rawmsg%:原始消息内容
- %syslogfacility-text%:syslog 设施文本
- %syslogseverity-text%:syslog 严重性文本
- %syslogfacility%:syslog 设施编号
- %syslogseverity%:syslog 严重性编号
- %fromhost-ip%:发送日志的主机IP地址
- %programname%:程序名称
- %syslogtag%:syslog 标签
- %msg%:日志消息内容
更多属性请查看官方文档:https://www.rsyslog.com/doc/configuration/properties.html
模版动态文件名生成
$template DynamicFile,"/var/log/%$YEAR%-%$MONTH%-%$DAY%.log"
*.* ?DynamicFile
这段配置会将所有日志写入以当前日期命名的文件中,例如/var/log/2024-09-09.log
设定过滤规则
if $fromhost-ip == '192.168.1.1' then /var/log/host1.log
if $msg contains 'error' then /var/log/error.log
#可以组合条件过滤
if ($fromhost-ip == '192.168.1.1' and $msg contains 'error') then /var/log/host1_error.log
if $timegenerated contains '2024-09-09' then /var/log/today.log
- fromhost-ip :过滤日志来源IP
- msg:过滤日志报文包含的内容
- timegenerated:过滤事件