Linux-rsyslog日志格式修改

发布时间 2023-06-26 08:59:01作者: 羊37

0.背景

rsyslog是linux系统中用来实现日志功能的服务。默认已经安装,并且自动启用。

作用:主要用来采集日志,不生产日志

  • 支持输出日志到各种数据库,如 MySQL,PostgreSQL,MongoDB ElasticSearch,等等;

  • 通过 RELP + TCP 实现数据的可靠传输(基于此结合丰富的过滤条件可以建立一种 可靠的数据传输通道供其他应用来使用);

  • 精细的输出格式控制以及对消息的强大 过滤能力;

  • 高精度时间戳;队列操作(内存,磁盘以及混合模式等); 支持数据的加密和压缩传输等。

好咯,反正就是个日志工具。

平时哪些地方涉及到这玩意?

我比较多的就是crontab的日志在这里。

# 查看cron日志的位置
cat /etc/rsyslog.conf | grep cron

# 输出
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# Log cron stuff
cron.*                                                  /var/log/cron

解释下上面的两行。

  • *.info;mail.none;authpriv.none;cron.none

    这是一个过滤规则,它表示将所有的 info 级别的日志消息发送到 /var/log/messages 文件。

    *.info:所有设备和所有的日志级别为 info 的消息都会匹配这个规则。

    ;mail.none;authpriv.none;cron.none :表示排除 mail、authpriv 和 cron 这些设备和对应的日志级别,不会被发送到 /var/log/messages 文件中。

  • cron.*

    这是另一个过滤规则,它表示将所有与 cron 相关的日志消息发送到 /var/log/cron 文件。

    cron.*: 表示所有来自 cron 设备的日志消息都会匹配这个规则。

你看,为啥在/var/log/cron、/var/log/messages这些地方看日志,因为这里声明过。

1.日志格式修改

以修改/var/log/messages中日志格式为例

这是修改前的样子,我准备将日期改下格式。

image-20230625170221620

1.1 编辑配置文件

vim /etc/rsyslog.conf

1.2 查找关键字

Template=

这是指定日志消息格式的行,在该行下方追加自定义日志格式CustomFormat

$template CustomFormat,"%TIMESTAMP:1:23:date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%\n"

上述模板定义了新的日志消息格式,其中 %timegenerated:1:10:date-rfc3339% 部分指定了日期和时间的格式为 yyyy/MM/dd HH:mm:ss

1.3 找到要自定格式的日志

/var/log/messages

末尾追加;CustomFormat

*.* /var/log/messages;CustomFormat

这样,rsyslog 将使用新的模板格式来记录日志消息。

image-20230625170730202

1.4 保存并退出

1.5 重新启动 rsyslog 服务

重启使配置更改生效。

systemctl restart rsyslog

现在,日志已经变成另一个格式了。

image-20230625170459818