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
中日志格式为例
这是修改前的样子,我准备将日期改下格式。
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 将使用新的模板格式来记录日志消息。
1.4 保存并退出
1.5 重新启动 rsyslog 服务
重启使配置更改生效。
systemctl restart rsyslog
现在,日志已经变成另一个格式了。