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); }