Bootstrap

【Linux】开启 cron 日志 + rsyslog配置小记

我使用的是 CentOS8,按理说 cron 的日志应该在 /var/log/cron 中,但实际读取该文件时,发现并没有内容。于是上网找了一下,发现 https://www.youtube.com/watch?v=KeFbubmw8lA 的内容解决了这个问题,现将解决步骤总结如下:

  1. 进入 /etc/rsyslog.d 目测这个文件夹是用来保存系统日志保存地址配置的
  2. 编辑 50-default.conf 如果该文件不存在,创建一个同名文件即可
  3. 50-default.conf 中写入(或修改)cron.* 列的内容:
cron.*  /var/log/cron

大功告成。

rsyslog 配置

rsyslog 的手册:
https://man7.org/linux/man-pages/man8/rsyslogd.8.html

rsyslog 的配置手册(讲解了配置的详细格式):
https://man7.org/linux/man-pages/man5/rsyslog.conf.5.html

rsyslog 的默认配置文件在 /etc/rsyslog.conf 中,这里我配置的时候发现其实配置文件中已经存在 cron 的相关配置,但是不知道为什么没有生效,可能是因为设置了 rsyslog 的默认配置文件地址。

回到 /etc/rsyslog.d 文件夹下,我们创建了一个 50-default.conf 的文本文件,并写入了 cron.* /var/log/cron 这一串字符。

实际上这一串字符可以分为三个部分:应用、优先级、动作,写出来应该是这样的:应用.优先级 动作

可以看到 cron 就是我们要 log 的应用,点号(.)用来分隔优先级,这里我们把优先级设置为 * 表示任意优先级,其实还可以设置某个具体的优先级,配置可以参考上面的配置手册。最后是动作,最常见的动作是把日志写入到某个真实文件,写入文件的动作以 / 开头,后面跟的是要写入的文件路径,这里是 var/log/cron

实际上动作还可以有很多配置,比如把日志写入到数据库、发给其它主机等,感兴趣的读者可以自行探索。

第四个部分:动作的模板
实际上我们的配置还可以自定义输出格式:
cron.* /var/log/cron;RSYSLOG_TraditionalFileFormat
可以看到我们在 动作后面添加了 ;RSYSLOG_TraditionalFileFormat 这一串字符就表示输出格式为传统格式,和默认格式(也就是什么都不加)相比,这个格式没有高精度时间戳。

总结

实际上 rsyslog 还有很多配置这里没有涉及。本来写这篇博客只是为了记录 cron 日志不生效的问题,本着解决问题的同时也要搞懂问题的原则,查了下手册,才发现有这么多东西。后续还需要更多的实践来更加熟悉。

PS:感觉50-default.conf这个文件名可以随便取(参考 nginx 的配置文件名)。

;