系统日志filter通过标签或文本包含自己的文件

我需要从我的Python应用程序login到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 

filter仅适用于没有标签的logging器命令:

 # 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 

我做什么不好? 我不想按进程名称筛选。

您需要在rsyslogconfiguration的代码中包含: 尝试以下操作:

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