[Development] Cake and eating it too for qDebug printing to system log - https://codereview.qt-project.org/89357

Alejandro Exojo suy at badopi.org
Fri Jul 11 07:45:23 CEST 2014


El Friday 11 July 2014, Lisandro Damián Nicanor Pérez Meyer escribió:
> AFAIU from this thread, journald support should not be enabled except
> "regular  users can read the output". Now what I'm missing here is: if Qt
> is built with journald support, can it be still be used if journald is not
> present?

No. Quote from: 
http://www.freedesktop.org/software/systemd/man/sd_journal_send.html

"If systemd-journald(8) is not running (the socket is not present), those 
functions do nothing, and also return 0."
 
> Yes, I happen to be maintaining Qt for a distro in which users can still 
> choose the init system.

And unfortunately, there is no clean way to test for it. There is the 
sd_booted() function, but:

"Internally, this function checks whether the directory /run/systemd/system/ 
exists. A simple check like this can also be implemented trivially in shell or 
any other language."

Which wasn't enough in my tests. Since I used systemd to boot the (developer) 
system, but I ran the app on Creator, it would return true all the time, and I 
got no output on Creator.

It might be even worse if systemd-shim provides that directory. Is it worth to 
try sd_journal_open() and see if it fails? Or check some other way if systemd 
actually launched the application?

Also, the way is done now (more after the patch on review) is to check for the 
console first, and then the decision is done. If the heuristics to find a 
console are good enough for you, having journald support is irrelevant, since 
if you are in a console you'll get the stderr printing.

-- 
Alex (a.k.a. suy) | GPG ID 0x0B8B0BC2
http://barnacity.net/ | http://disperso.net



More information about the Development mailing list