Syslog 根据标签或文本内容过滤至自己的文件

Syslog 根据标签或文本内容过滤至自己的文件

我需要从我的 Python 应用程序登录到 syslog。在 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/测试.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

我做错了什么?我不想按进程名称进行过滤。

答案1

您需要在 rsyslog 配置的标签中包含 :。请尝试以下操作:

:syslogtag, isequal, "MyLog:" /var/log/mylog.log

相关内容