From 77829f92defd28523b318c96031d87505d7c38e5 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Thu, 24 Jul 2014 10:40:59 -0400 Subject: [PATCH] split very long log lines into smaller pieces --- daemon/log.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/daemon/log.c b/daemon/log.c index 687ffb74d..17ee1c745 100644 --- a/daemon/log.c +++ b/daemon/log.c @@ -10,12 +10,16 @@ struct log_info __thread log_info; volatile gint log_level = LOG_INFO; +#ifndef MAX_LOG_LINE_LENGTH +#define MAX_LOG_LINE_LENGTH 500 +#endif void ilog(int prio, const char *fmt, ...) { char prefix[256]; - char *msg; + char *msg, *piece; + const char *infix = ""; va_list ap; int ret, xprio; @@ -55,7 +59,16 @@ void ilog(int prio, const char *fmt, ...) { return; } - syslog(xprio, "%s%s", prefix, msg); + piece = msg; + + while (ret > MAX_LOG_LINE_LENGTH) { + syslog(xprio, "%s%s%.*s ...", prefix, infix, MAX_LOG_LINE_LENGTH, piece); + ret -= MAX_LOG_LINE_LENGTH; + piece += MAX_LOG_LINE_LENGTH; + infix = "... "; + } + + syslog(xprio, "%s%s%s", prefix, infix, piece); free(msg); }