chiark / gitweb /
Revert "log: fix fallbacks to kmsg"
authorLennart Poettering <lennart@poettering.net>
Wed, 27 Feb 2013 13:33:50 +0000 (14:33 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 27 Feb 2013 13:33:50 +0000 (14:33 +0100)
This reverts commit 4a01181e460686d8b4a543b1dfa7f77c9e3c5ab8.

This patch broke LOG_TARGET_AUTO, i.e. automatic selection of STDERR if
it is a TTY with a fallback on the journal and kmsg otherwise.

The general rule should probably be:

log_open() -- open the "best" possible logging channel according to
log_target configuration.

log_dispatch() -- don't open any log channels ever, with the exception
of kmsg since that has no drawbacks. And do this only on true errors of
the better log channel, not just when it wasn't opened.

src/shared/log.c

index ff2dd453509a2b813c942c6208211dea026887d6..293c261f9e83bbde58a3a17483f787ccf4ffc366 100644 (file)
@@ -541,11 +541,11 @@ static int log_dispatch(
 
                         k = write_to_journal(level, file, line, func,
                                              object_name, object, buffer);
 
                         k = write_to_journal(level, file, line, func,
                                              object_name, object, buffer);
-                        if (k <= 0) {
-                                if (k < 0 && k != -EAGAIN)
+                        if (k < 0) {
+                                if (k != -EAGAIN)
                                         log_close_journal();
                                 log_open_kmsg();
                                         log_close_journal();
                                 log_open_kmsg();
-                        } else
+                        } else if (k > 0)
                                 r++;
                 }
 
                                 r++;
                 }
 
@@ -554,11 +554,11 @@ static int log_dispatch(
 
                         k = write_to_syslog(level, file, line, func,
                                             object_name, object, buffer);
 
                         k = write_to_syslog(level, file, line, func,
                                             object_name, object, buffer);
-                        if (k <= 0) {
-                                if (k < 0 && k != -EAGAIN)
+                        if (k < 0) {
+                                if (k != -EAGAIN)
                                         log_close_syslog();
                                 log_open_kmsg();
                                         log_close_syslog();
                                 log_open_kmsg();
-                        } else
+                        } else if (k > 0)
                                 r++;
                 }
 
                                 r++;
                 }
 
@@ -571,11 +571,10 @@ static int log_dispatch(
 
                         k = write_to_kmsg(level, file, line, func,
                                           object_name, object, buffer);
 
                         k = write_to_kmsg(level, file, line, func,
                                           object_name, object, buffer);
-                        if (k <= 0) {
-                                if (k < 0 && k != -EAGAIN)
-                                        log_close_kmsg();
+                        if (k < 0) {
+                                log_close_kmsg();
                                 log_open_console();
                                 log_open_console();
-                        } else
+                        } else if (k > 0)
                                 r++;
                 }
 
                                 r++;
                 }