有答案建议改变这一点:
*.*;auth,authpriv.none -/var/log/syslog
#cron.* -/var/log/cron.log
变成这样:
*.*;cron,auth,authpriv.none -/var/log/syslog
cron.* -/var/log/cron.log
这是可行的,但是需要以相当精确的方式编辑第一行,当您想要自动化配置时,这会变得复杂。
是的,使用 sed 或 Salt file.replace state 是可行的,但我想通过附加/添加 rsyslog.conf 文件来实现,或者更好的是 - 通过创建/etc/rsyslog.d/(00|99)-my-cron-log.conf
使其更强大和与分布无关,尽管我没有足够遵循 rsyslog.conf 配置逻辑来使其工作。我无法从 syslog.log 中删除“CRON”行,除非使用上述示例。
是否有可能禁用 cron 登录 syslog.log 而无需修改软件包维护者配置行?
答案1
是否有可能在不修改包维护者配置行的情况下禁用 cron 登录 syslog.log?
不。基于 Debian 的系统上的 cron(8) 确实提供了一个 -L 选项,该选项将日志级别的值设置为 0 以禁用日志记录,但基于 EL 的发行版中却没有此功能。
没有理由不编辑这些文件。我可能只会创建一个标准文件并让我的 CM 解决方案部署它。
答案2
至少从 2021 年起,创建一个在/etc/rsyslog.d/
默认(在 Debian 派生系统中)conf 文件之前加载的 conf 文件/etc/rsyslog.d/50-default.conf
做工作。该名称应类似于(00-49)-name.conf
。
例如我创建了一个文件/etc/rsyslog.d/00-custom.conf
:
# Don't overflow logs, suppress cron logs for tasks running every minute
# (needs to append "#minutely" as a comment at the end of such commands)
if $programname == 'CRON' and $msg contains '#minutely' then stop
# Put info level cron logs in a separated file.
cron.=info /var/log/cron.log # redirect if level is exactly 'info'
cron.notice -/var/log/syslog # keep sending to syslog if level is 'notice' or higher
cron.* stop # drop messages here to avoid default redirections
要使更改立即生效:
# systemctl restart rsyslog.service