[systemd-devel] Systemd service and structured logging

Lennart Poettering lennart at poettering.net
Tue May 7 12:37:30 UTC 2019

On Mo, 06.05.19 09:12, Thomas G├╝ttler (guettliml at thomas-guettler.de) wrote:

> Solution 1:
>  My service (written Python) uses the journald API.
>  Disadvantage: My script can't be run under a different environment
>  (without journald)

Doesn't Python have an abstraction for that that does some basic
structured logging and is able to fallback to classic text-only
logging if that's not available?

> Solution 2:
>  I let my service write json to stdout and a wrapper collects these lines and the wrapper uses the journald API.
>  Disadvantage: Systemd is monitoring the wrapper, not the real service. Signal handling for stopping and restarting
>  is not direct from systemd to service.

Note that JSON is considerably more complex than the simply text
key/value pairs the journal consumes. Moreover, for the journal we
have a vocabulary of common log fields defined, not sure how that
would translate either way to json...

Note that "journalctl -o json" may be used to convert journal logging
to json, but there's no approach for the reverse, since it's not clear
how to map thta.

As mentioned, the simpler key/value logic of the journal is chosen on
purpose, so that we can relatively straight-forwardly index by these
fields, which is not obvious when you consume full json.


Lennart Poettering, Berlin

More information about the systemd-devel mailing list