On Ubuntu LTS 16.04, SysLogHandler with a custom formatter does not seem to expand loglevel/levelno fields properly, when there are square brackets ( see the attached examples ). Instead, it seems to replace '[%(loglevel)s]' with a '[pid]', and '%(loglevel)s' with 'LOGLEVEL[pid]' . To test, run 'journalctl -f | grep test_test_test' on one console, and the attached files on another. The output for 'bad.py' looks as follows: === Feb 28 21:30:05 hostname <test_test_test>[7117]: logging was configured for process <7117> === And should have looked like: === Feb 28 21:30:05 hostname <test_test_test>[INFO]: logging was configured for process <7117> === For 'good.py', the output is as follows: === Feb 28 21:30:04 hostname <test_test_test>INFO[7114]: logging was configured for process <7114> === and should have probably been: === Feb 28 21:30:04 hostname <test_test_test>INFO: logging was configured for process <7114> === Kind regards, /t13
PS. I'm not sure if that is a systemd/journald issue, or indeed a Python bug. However, it would be nice to clear one possibility. For a StreamHandler, it all works as it should.
This is not a bug - logging is formatting the message as per the specified format string. It then prepends the priority and sends the result to the socket. What you are seeing is just how systemd/journald interpret the message that's sent.
History
Date
User
Action
Args
2022-04-11 14:58:43
admin
set
github: 73861
2017-03-01 07:28:38
vinay.sajip
set
status: open -> closedresolution: not a bugmessages: + stage: resolved