Команда rsyslog stop копирует сообщения вместо перемещения - PullRequest
1 голос
/ 15 января 2020

В Ubuntu 18.04 с rsyslogd 8.32.0,

Чтобы переместить записи журнала из моей службы с именем "mqtt433", я добавил следующее в /etc/rsyslog.d/50-default.conf:

if $programname == 'mqtt433' then {
    action(type="omfile" File="/var/log/mqtt433_log.log")
    stop
}

, который создает файл /var/log/mqtt433_log.log и добавляет в него сообщения журнала из службы, как и ожидалось. Что я не должен делать в моем понимании, так это то, что он не должен сохранять строки в файле по умолчанию (/ var / log / syslog), в то время как он делает это.

Другими словами, он должен переместить сообщение в новый файл, а не копировать их.

Я также пробовал использовать синтаксис старого правила с тем же результатом.

:programname, isequal, "mqtt433" /var/log/mqtt433.log
& stop

Также я безуспешно пытаюсь использовать устаревший синтаксис

& ~

вместо

& stop

.

Что я делаю не так?

1 Ответ

1 голос
/ 15 января 2020

Убедитесь, что ваш файл conf читается перед любыми другими правилами. Например, проверьте, что в каталоге /etc/rsyslog.d/ нет более ранних файлов и нет правил фильтрации в строке rsyslog.conf перед строкой $IncludeConfig /etc/rsyslog.d/*.conf, которая включает вашу конфигурацию на данный момент. Как правило, правила размещаются после комментария ## RULES ## и выполняются в порядке их появления.

...