I need to log from my Python application to syslog. In syslog I want filter messages from my app to own file. I'm using Debian 8.3.
My rsyslog rules:
# cat /etc/rsyslog.d/99-MyLog.conf
:syslogtag, isequal, "MyLog" /var/log/mylog.log
:msg, contains, "MyLog" /var/log/mylog.log
And my python script /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")
If send messages to syslog:
# logger -t MyLog "Test from bash logger"
# logger "MyLog Test from bash logger"
# python /tmp/test.py
Filter works only for logger command without tag:
# 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
What I do bad? I do not want filter by process name.