split very long log lines into smaller pieces

pull/13/head
Richard Fuchs 12 years ago
parent 681b2c1a24
commit 77829f92de

@ -10,12 +10,16 @@
struct log_info __thread log_info; struct log_info __thread log_info;
volatile gint log_level = 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, ...) { void ilog(int prio, const char *fmt, ...) {
char prefix[256]; char prefix[256];
char *msg; char *msg, *piece;
const char *infix = "";
va_list ap; va_list ap;
int ret, xprio; int ret, xprio;
@ -55,7 +59,16 @@ void ilog(int prio, const char *fmt, ...) {
return; 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); free(msg);
} }

Loading…
Cancel
Save