rationalize interface for opening/closing logging
authorAlan Jenkins <alan.christopher.jenkins@gmail.com>
Fri, 26 Jan 2018 13:42:53 +0000 (13:42 +0000)
committerAlan Jenkins <alan.christopher.jenkins@gmail.com>
Sat, 27 Jan 2018 18:01:51 +0000 (18:01 +0000)
commitcc2b9e6b20d71c60540f54646c3ec87cf57b0400
treedf74fb36626e6ba810f611fba06a86ef1e99fb83
parentba307538994fb688284a13bb215267c3312bb5c7
rationalize interface for opening/closing logging

log_open_console() did not switch from stderr to /dev/console, when
"always_reopen_console" was set.  It was necessary to call
log_close_console() first.

By contrast, log_open() did switch between e.g. journald and kmsg according
to the value of "prohibit_ipc".

Let's fix log_open() to respect the values of all the log options, and we
can make log_close_*() private.

Also log_close_console() is changed.  There was some precaution, avoiding
closing the console fd if we are not PID 1.  I think commit 48a601fe made
a little mistake in leaving this in, and it only served to confuse
readers :).

Also I changed systemd-shutdown. Now we have log_set_prohibit_ipc(), let's
use it to clarify that systemd-shutdown is not expected to try and log via
journald (which it is about to kill).  We avoided ever asking it to, but
it's more convenient for the reader if they don't have to think about that.
In that sense, it's similar to using assert() to validate a function's
arguments.
src/basic/log.c
src/basic/log.h
src/core/main.c
src/core/manager.c
src/core/shutdown.c