diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index 333db4c9..f4d33199 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -2150,37 +2150,40 @@ int lws_confirm_legit_wsi(struct libwebsocket *wsi) return 0; } -static void lwsl_emit_stderr(const char *line) +static void lwsl_emit_stderr(int level, const char *line) { - fprintf(stderr, "%s", line); + char buf[300]; + struct timeval tv; + int pos = 0; + int n; + + gettimeofday(&tv, NULL); + + buf[0] = '\0'; + for (n = 0; n < LLL_COUNT; n++) + if (level == (1 << n)) { + pos = sprintf(buf, "[%ld:%04d] %s: ", tv.tv_sec, + (int)(tv.tv_usec / 100), log_level_names[n]); + break; + } + + fprintf(stderr, "%s%s", buf, line); } void _lws_log(int filter, const char *format, ...) { char buf[256]; va_list ap; - int n; - int pos = 0; - struct timeval tv; if (!(log_level & filter)) return; - gettimeofday(&tv, NULL); - - for (n = 0; n < LLL_COUNT; n++) - if (filter == (1 << n)) { - pos = sprintf(buf, "[%ld:%04d] %s: ", tv.tv_sec, - (int)(tv.tv_usec / 100), log_level_names[n]); - break; - } - va_start(ap, format); - vsnprintf(buf + pos, (sizeof buf) - pos, format, ap); + vsnprintf(buf, (sizeof buf), format, ap); buf[(sizeof buf) - 1] = '\0'; va_end(ap); - lwsl_emit(buf); + lwsl_emit(filter, buf); } /** diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 404d5254..0bc5050f 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -671,7 +671,7 @@ struct libwebsocket_extension { }; LWS_EXTERN -void lws_set_log_level(int level, void (*log_emit_function)(const char *line)); +void lws_set_log_level(int level, void (*log_emit_function)(int level, const char *line)); LWS_EXTERN struct libwebsocket_context * libwebsocket_create_context(int port, const char * interf,