я использую rsyslog 8.22 для получения данных системного журнала, отправленных с клиентских хостов. Моя цель - создать по одному файлу журнала для каждого клиента.
Я нашел много данных о старых версиях rsyslog, но изменение синтаксиса конфигурации меня сбило с толку.
Эта конфигурация доказывает, что rsyslog работает, но объединяет все записи в один файл:
if $fromhost-ip startswith '192.168.117.' then {
action(type="omfile" file="/var/log/network.log")
stop
}
(Остальные мои /etc/rsyslog.conf
по умолчанию.)
Следующее не работает. (Файл не создается):
template (name="DynFile" type="string" string="/var/log/network-%fromhost-ip%.log")
if $fromhost-ip startswith '192.168.117.' then {
action(type="omfile" file="DynFile")
stop
}
Что мне не хватает?
Исправление заключается в том, чтобы указать dynaFile
в действие аргумент (не file
).
template (name="DynFile" type="string" string="/var/log/network-%fromhost-ip%.log")
if $fromhost-ip startswith '192.168.117.' then {
action(type="omfile" dynaFile="DynFile")
stop
}
Это дает ожидаемые результаты:
$ ls -l /var/log/network/
-rw-r--r--. 1 root root 286 Oct 4 13:21 192.168.117.21.log
-rw-r--r--. 1 root root 284 Oct 4 13:25 192.168.117.22.log
-rw-r--r--. 1 root root 184 Oct 4 13:32 192.168.117.27.log
$