Понимание системного журнала conf - предназначающийся для определенных типов / теги журналов

Я комбинирую файлы журнала от нескольких контейнеров докера на моем хосте и отправляю им удаленный сервис входа. Я просто перенаправляю вывод к регистратору и отмечаю его:

docker-compose logs 2>&1 | logger -t deviant

Это легко настраивается через:

*.*  @remote_service:remote_port

Однако *.* соответствует каждому виду журналов от моей хост-машины, когда я только хочу отправить перенаправленные журналы удаленной службе.

Вот пример журнала, который я хочу получить:

Apr 08 08:55:04 calvin.local deviant:  proxy_1 | 192.168.59.3 - - [08/Apr/2015:15:55:04 +0000] "stuff here"

Заметьте, что это содержит calvin.local deviant

Те содержащие deviant единственные, которые я хочу. Я попытался указать который записи в журнале как это:

*deviant*

... и перезапущенный вход..., но я все еще вижу все записи (не просто отмеченные deviant) в моих удаленных журналах. Почему?

0
задан 8 April 2015 в 19:01
1 ответ

В syslog.conf вы можете назначить действие только в соответствии с данным средством и уровнем сообщения.

Тег, указанный в logger -t [tag] не может использоваться для идентификации сообщения системным журналом. Однако вы можете использовать опцию -p [feature.level] ' в logger , чтобы установить пользовательское средство и уровень, например:

logger -t deviant -p local3.info

Затем в syslog.conf вы можете поймать и перенаправить эти сообщения:

local3.info  @remote_service:remote_port

Попробуйте найти средство, которое не используется другими службами. Хорошим выбором будет один из вариантов от local0 до local7 .

Когда вы указываете уровень, например info , по умолчанию это означает минимальный уровень, который будет соответствует правилу.

Подробнее:

1
ответ дан 4 December 2019 в 16:59

Теги

Похожие вопросы