Фильтр системного журнала для собственного файла по тегу или тексту, содержащему

Мне нужно войти из моего приложения Python в syslog. В системном журнале я хочу фильтровать сообщения из моего приложения в собственный файл. Я использую Debian 8.3.

Мои rsyslog правила:

# cat /etc/rsyslog.d/99-MyLog.conf 
:syslogtag, isequal, "MyLog" /var/log/mylog.log

:msg, contains, "MyLog" /var/log/mylog.log

И мой скрипт python /tmp/test.py :

import logging.handlers

my_logger = logging.getLogger('MyLog')
my_logger.setLevel(logging.INFO)
handler = logging.handlers.SysLogHandler(address = '/dev/log')
formatter = logging.Formatter('MyLog: %(message)s')
handler.setFormatter(formatter)
my_logger.addHandler(handler)

my_logger.info("Test Log 123")

Если отправлять сообщения в системный журнал:

# logger -t MyLog "Test from bash logger"
# logger "MyLog Test from bash logger"
# python /tmp/test.py

Фильтр работает только для команды логгера без тега:

# tail -n 3 /var/log/syslog
Jun 30 09:45:42 server MyLog: Test from bash logger
Jun 30 09:45:44 server martin: MyLog Test from bash logger
Jun 30 09:45:47 server MyLog: Test Log 123

# cat /var/log/mylog.log 
Jun 30 09:45:44 server martin: MyLog Test from bash logger

Что я делаю плохо? Я не хочу фильтровать по имени процесса.

0
задан 30 June 2016 в 10:48
1 ответ

Вам необходимо включить: в свой тег в конфигурации rsyslog. Попробуйте следующее:

:syslogtag, isequal, "MyLog:" /var/log/mylog.log
1
ответ дан 4 December 2019 в 16:34

Теги

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