Есть ответы, которые предлагают изменить это:
*.*;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, но я бы хотел реализовать, добавив / добавив файл rsyslog.conf, или, что еще лучше, создав /etc/rsyslog.d/ (00 | 99) -my-cron-log.conf
, чтобы сделать его более надежным и независимым от распределения, хотя я недостаточно следую логике конфигурации rsyslog.conf, чтобы заставить его работать. Я не могу удалить строки "CRON" из syslog.log, за исключением приведенного выше примера.
Можно ли вообще отключить cron для входа в syslog. log без изменения строк конфигурации сопровождающего пакета?
Возможно ли вообще отключить cron для входа в syslog.log без изменения строк конфигурации сопровождающего пакета?
Нет. В cron(8) из систем на базе Debian предусмотрена опция -L, которая устанавливает значение 0 для уровня журнала, но она недоступна в дистрибутивах на базе EL.
Нет никакой реальной причины не редактировать файлы. Вероятно, я бы просто создал стандартный файл и попросил бы свое решение CM установить его.
По крайней мере, начиная с 2021 года, создание файла conf в /etc/rsyslog.d/
, который загружается до используемого по умолчанию (в производных от Debian системах)файла 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