helper api: log through syslog
Signed-off-by: Andy Green <andy.green@linaro.org>
diff --git a/README-test-server b/README-test-server
index cd0e789..4f0926c 100644
--- a/README-test-server
+++ b/README-test-server
@@ -426,6 +426,10 @@
emit the log string. By default, this points to an internal emit function
that sends to stderr. Setting it to NULL leaves it as it is instead.
+A helper function lwsl_emit_syslog() is exported from the library to simplify
+logging to syslog. You still need to use setlogmask, openlog and closelog
+in your user code.
+
Websocket version supported
---------------------------
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index fda2a95..6113f9b 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -20,6 +20,7 @@
*/
#include "private-libwebsockets.h"
+#include <syslog.h>
#ifdef WIN32
#include <tchar.h>
@@ -2171,6 +2172,27 @@
fprintf(stderr, "%s%s", buf, line);
}
+void lwsl_emit_syslog(int level, const char *line)
+{
+ int syslog_level = LOG_DEBUG;
+
+ switch (level) {
+ case LLL_ERR:
+ syslog_level = LOG_ERR;
+ break;
+ case LLL_WARN:
+ syslog_level = LOG_WARNING;
+ break;
+ case LLL_NOTICE:
+ syslog_level = LOG_NOTICE;
+ break;
+ case LLL_INFO:
+ syslog_level = LOG_INFO;
+ break;
+ }
+ syslog(syslog_level, line);
+}
+
void _lws_log(int filter, const char *format, ...)
{
char buf[256];
diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h
index c565491..a5e283d 100644
--- a/lib/libwebsockets.h
+++ b/lib/libwebsockets.h
@@ -674,6 +674,9 @@
LWS_EXTERN
void lws_set_log_level(int level, void (*log_emit_function)(int level, const char *line));
+LWS_EXTERN void
+lwsl_emit_syslog(int level, const char *line);
+
LWS_EXTERN struct libwebsocket_context *
libwebsocket_create_context(int port, const char * interf,
struct libwebsocket_protocols *protocols,