journal: support changing the console tty to forward to

This commit is contained in:
Lennart Poettering 2012-06-01 01:06:10 +02:00
parent 01cf0ca850
commit 0d9243f022
6 changed files with 21 additions and 9 deletions

6
TODO
View File

@ -31,8 +31,6 @@ Features:
* nspawn: make use of device cgroup contrller by default
* parse kernel cmdline option for capability bset
* journalctl /dev/sda, journalctl --device=b12:8 (--device=n12, --device=+usb:1-1)
* make use of /sys/power/wake_lock in inhibitors
@ -41,8 +39,6 @@ Features:
* make sure show-logs checks for utf8 validity, not ascii validity
* add TimerSlackNS to system.conf to set system-wide caps bounds
* when breaking cycles drop sysv services first, then services from /run, then from /etc, then from /usr
* readahead: when bumping /sys readahead variable save mtime and compare later to detect changes
@ -104,8 +100,6 @@ Features:
* Auke: merge Auke's bootchart
* journald: allow forwarding of log data to specific TTY instead of console
* udev: move to LGPL
* udev systemd unify:

View File

@ -224,6 +224,16 @@
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>TTYPath=</varname></term>
<listitem><para>Change the console TTY
to use if
<varname>ForwardToConsole=yes</varname>
is used. Defaults to
<filename>/dev/console</filename>.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>ImportKernel=</varname></term>

View File

@ -29,3 +29,4 @@ Journal.ForwardToSyslog, config_parse_bool, 0, offsetof(Server, forward_
Journal.ForwardToKMsg, config_parse_bool, 0, offsetof(Server, forward_to_kmsg)
Journal.ForwardToConsole, config_parse_bool, 0, offsetof(Server, forward_to_console)
Journal.ImportKernel, config_parse_bool, 0, offsetof(Server, import_proc_kmsg)
Journal.TTYPath, config_parse_path, 0, offsetof(Server, tty_path)

View File

@ -965,6 +965,7 @@ static void forward_console(Server *s, const char *identifier, const char *messa
char header_pid[16];
int n = 0, fd;
char *ident_buf = NULL;
const char *tty;
assert(s);
assert(message);
@ -992,14 +993,16 @@ static void forward_console(Server *s, const char *identifier, const char *messa
IOVEC_SET_STRING(iovec[n++], message);
IOVEC_SET_STRING(iovec[n++], "\n");
fd = open_terminal("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC);
tty = s->tty_path ? s->tty_path : "/dev/console";
fd = open_terminal(tty, O_WRONLY|O_NOCTTY|O_CLOEXEC);
if (fd < 0) {
log_debug("Failed to open /dev/console for logging: %s", strerror(errno));
log_debug("Failed to open %s for logging: %s", tty, strerror(errno));
goto finish;
}
if (writev(fd, iovec, n) < 0)
log_debug("Failed to write to /dev/console for logging: %s", strerror(errno));
log_debug("Failed to write to %s for logging: %s", tty, strerror(errno));
close_nointr_nofail(fd);
@ -2782,6 +2785,7 @@ static void server_done(Server *s) {
journal_rate_limit_free(s->rate_limit);
free(s->buffer);
free(s->tty_path);
}
int main(int argc, char *argv[]) {

View File

@ -23,3 +23,4 @@
#ForwardToKMsg=no
#ForwardToConsole=no
#ImportKernel=yes
#TTYPath=/dev/console

View File

@ -79,6 +79,8 @@ typedef struct Server {
LIST_HEAD(StdoutStream, stdout_streams);
unsigned n_stdout_streams;
char *tty_path;
} Server;
/* gperf lookup function */