----- Original Message -----
Given systemd's fast adoption across a wide range of Linux
distros,
in particular the enterprise distros from Red Hat & SUSE, we're
going to have journald support in places where structured logging
really matters, likely expanding to all Linux distros in a reasonably
short period. As such I don't really have a desire to also support
Lumberjack format in libvirt natively. IMHO, system services should
just log to journald and either journald can forward plain messages
to syslog, or a tool can be created which pulls structured log data
out of the journal and formats it in Lumberjack format.
I can live with that; however the libvirt use case I am looking at does require adding
more metadata fields, and I can't see how doing that without memory allocation or
imposing arbitrary limits is possible. Imposing arbitrary limits it is, I guess.
> Re: async-signal-safe use: Yes, using a JSON library is more
convenien
> and generally preferred to writing a yet another JSON encoder, and yes,
> a typical JSON library will not be async-signal-safe. However,
> applications are not required to use all JSON facilities. An application
> that wants to log a static string between fork() and execve() can just as
> easily log a static JSON string.
I don't really see logging preformatted static JSON strings as a
satisfactory approach, especially when compared to the way you can
use journald.
That is either write 150 lines of code, or rely on libsystemd-journal code that was not
promised to be async-signal-safe?
> Regarding libvirt specifically, virLogVMessage is rather far
from
> async-signal-safe (e.g. virVasprintf(), virLogLock()), so this
> doesn't
> seem to be a concern for libvirt.
It actually *is* very much a concern for libvirt.
OK.
Mirek