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,