Blame 0009-logging-test-log-level-at-first-step.patch

Jakub Filak e5933ff
From 7d30aa09f740b3559ba610022577189a46dce112 Mon Sep 17 00:00:00 2001
Jakub Filak e5933ff
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak e5933ff
Date: Thu, 24 Jul 2014 13:34:50 +0200
Jakub Filak e5933ff
Subject: [PATCH 09/20] logging: test log level at first step
Jakub Filak e5933ff
Jakub Filak e5933ff
Return from the logger immediately if message's log level is not
Jakub Filak e5933ff
sufficient to write it to the log.
Jakub Filak e5933ff
Jakub Filak e5933ff
This patch is a workaround for rhbz#1122690 where we try to log a
Jakub Filak e5933ff
'post'ed string which has 18MB of size. It is not worth to try to fix it
Jakub Filak e5933ff
properly. We do not log such a big amount of data in non-debug mode, we
Jakub Filak e5933ff
need to have the logging extremely fast and we can live with crashes in
Jakub Filak e5933ff
debug mode.
Jakub Filak e5933ff
Jakub Filak e5933ff
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Jakub Filak e5933ff
---
Jakub Filak e5933ff
 src/lib/logging.c | 26 +++++++++++---------------
Jakub Filak e5933ff
 1 file changed, 11 insertions(+), 15 deletions(-)
Jakub Filak e5933ff
Jakub Filak e5933ff
diff --git a/src/lib/logging.c b/src/lib/logging.c
Jakub Filak e5933ff
index 259a634..4b9dd87 100644
Jakub Filak e5933ff
--- a/src/lib/logging.c
Jakub Filak e5933ff
+++ b/src/lib/logging.c
Jakub Filak e5933ff
@@ -66,7 +66,7 @@ static void log_handler(int level,
Jakub Filak e5933ff
                         int line,
Jakub Filak e5933ff
                         const char *func)
Jakub Filak e5933ff
 {
Jakub Filak e5933ff
-    if (!logmode)
Jakub Filak e5933ff
+    if (!logmode || !should_log(level))
Jakub Filak e5933ff
         return;
Jakub Filak e5933ff
 
Jakub Filak e5933ff
     /* This is ugly and costs +60 bytes compared to multiple
Jakub Filak e5933ff
@@ -122,29 +122,25 @@ static void log_handler(int level,
Jakub Filak e5933ff
     strcpy(&msg[used], msg_eol);
Jakub Filak e5933ff
 
Jakub Filak e5933ff
     if (flags & LOGMODE_STDIO) {
Jakub Filak e5933ff
-        if(should_log(level))
Jakub Filak e5933ff
-            full_write(STDERR_FILENO, msg, used + msgeol_len);
Jakub Filak e5933ff
+        full_write(STDERR_FILENO, msg, used + msgeol_len);
Jakub Filak e5933ff
     }
Jakub Filak e5933ff
     msg[used] = '\0'; /* remove msg_eol (usually "\n") */
Jakub Filak e5933ff
     if (flags & LOGMODE_SYSLOG) {
Jakub Filak e5933ff
-        if(should_log(level))
Jakub Filak e5933ff
-            syslog(level, "%s", msg + prefix_len);
Jakub Filak e5933ff
+        syslog(level, "%s", msg + prefix_len);
Jakub Filak e5933ff
     }
Jakub Filak e5933ff
 
Jakub Filak e5933ff
     if ((flags & LOGMODE_CUSTOM) && g_custom_logger) {
Jakub Filak e5933ff
-        if(should_log(level))
Jakub Filak e5933ff
-            g_custom_logger(msg + prefix_len);
Jakub Filak e5933ff
+        g_custom_logger(msg + prefix_len);
Jakub Filak e5933ff
     }
Jakub Filak e5933ff
 
Jakub Filak e5933ff
     if (flags & LOGMODE_JOURNAL) {
Jakub Filak e5933ff
-        if(should_log(level))
Jakub Filak e5933ff
-            sd_journal_send("MESSAGE=%s", msg + prefix_len,
Jakub Filak e5933ff
-                            "PRIORITY=%d", level,
Jakub Filak e5933ff
-                            "CODE_FILE=%s", file,
Jakub Filak e5933ff
-                            "CODE_LINE=%d", line,
Jakub Filak e5933ff
-                            "CODE_FUNC=%s", func,
Jakub Filak e5933ff
-                            "SYSLOG_FACILITY=1",
Jakub Filak e5933ff
-                            NULL);
Jakub Filak e5933ff
+        sd_journal_send("MESSAGE=%s", msg + prefix_len,
Jakub Filak e5933ff
+                        "PRIORITY=%d", level,
Jakub Filak e5933ff
+                        "CODE_FILE=%s", file,
Jakub Filak e5933ff
+                        "CODE_LINE=%d", line,
Jakub Filak e5933ff
+                        "CODE_FUNC=%s", func,
Jakub Filak e5933ff
+                        "SYSLOG_FACILITY=1",
Jakub Filak e5933ff
+                        NULL);
Jakub Filak e5933ff
     }
Jakub Filak e5933ff
 }
Jakub Filak e5933ff
 
Jakub Filak e5933ff
-- 
Jakub Filak e5933ff
2.0.4
Jakub Filak e5933ff