CentOS syslog(rsyslog)日志格式说明与自定义指南
CentOS系统中,syslog功能由rsyslog服务提供,其默认日志格式为传统syslog格式(RSYSLOG_TraditionalFileFormat),主要包含以下关键字段:
Oct 12 15:30:45);myhost);kernel、sshd);[1234]、kernel);EXT4-fs (sda1));mounted filesystem with ordered data mode)。典型默认日志示例:
Oct 12 15:30:45 myhost kernel: [1234.567890] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)。
若需调整日志格式(如增加/减少字段、修改字段顺序),可通过修改rsyslog配置文件实现,具体步骤如下:
rsyslog的主配置文件为/etc/rsyslog.conf,自定义配置建议存放在/etc/rsyslog.d/目录下(避免系统更新时被覆盖)。使用文本编辑器(如vim、nano)打开文件:
sudo vim /etc/rsyslog.conf 或 sudo vim /etc/rsyslog.d/50-custom.conf。
通过$template指令定义新的日志格式,模板名称可自定义(如CustomFormat),格式字符串由占位符组成(区分大小写)。常见占位符包括:
%timegenerated%:日志生成时间(完整时间戳);%hostname%:主机名;%syslogtag%:系统标签(程序名+进程ID,如sshd[1234]);%app-name%:应用程序名(如sshd);%procid%:进程ID;%msgid%:消息ID;%msg%:原始日志消息内容;%$!:结构化数据(可选)。示例1:基础格式(包含时间、主机名、程序名、消息)
$template CustomFormat, "%timegenerated% %hostname% %app-name%: %msg%\n"。
示例2:保留传统格式的关键字段(时间、主机名、设备名、消息)
$template CustomFormat, "%timegenerated% %hostname% %syslogtag% %msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"。
修改或添加日志记录规则,将自定义模板应用到指定日志类型。规则格式为:
<过滤条件> <动作>,其中<动作>需指定模板(使用template=参数)。
示例1:将所有日志(*.*)写入/var/log/custom.log并使用CustomFormat
*.* action(type="omfile" file="/var/log/custom.log" template="CustomFormat")。
示例2:仅将内核日志(kern.*)应用自定义格式
kern.* action(type="omfile" file="/var/log/kern_custom.log" template="CustomFormat")。
修改配置后,需重启rsyslog服务使更改生效:
sudo systemctl restart rsyslog。
/etc/rsyslog.d/目录下的配置文件优先级高于/etc/rsyslog.conf,建议将自定义配置放在该目录下;%msg:::sp-if-no-1st-sp%用于去除消息前的空格,%msg:::drop-last-lf%用于删除消息末尾的换行符(避免日志格式混乱);CustomFormat1、CustomFormat2),分别应用于不同类型的日志;logrotate(如/etc/logrotate.d/syslog),避免日志文件过大。