Systemd – Python Service Not Sending All Output to Syslog

pythonsyslogsystemd

I have a custom service and have explicitly called for all stdout & stderr to be sent to syslog in the config file, however only some of the output appears in both syslog and the journal (they are consistent).

I my desperation I have done the following in the service files:

StandardOutput=syslog+console
StandardError=syslog+console

The service is a python script and I write to stdout using the 'print' statement (Python 2.7). These items seem to be lost to the ether, while other command outputs write correctly both to syslog and journald. If I run the script interactively everything appears in stdout as expected.

What is lacking in my knowledge?

Best Answer

JdeBP's comment was the correct solution:

Systemd Python service not sending all output to syslog

The solution was to add the -u option to the interpreter to make standard streams send their output unbuffered.

Related Question