diff --git a/common/rfb/CMakeLists.txt b/common/rfb/CMakeLists.txt
index e9b027a..b690ec1 100644
--- a/common/rfb/CMakeLists.txt
+++ b/common/rfb/CMakeLists.txt
@@ -29,6 +29,7 @@
   Logger.cxx
   Logger_file.cxx
   Logger_stdio.cxx
+  Logger_syslog.cxx
   Password.cxx
   PixelBuffer.cxx
   PixelFormat.cxx
diff --git a/common/rfb/Logger_syslog.cxx b/common/rfb/Logger_syslog.cxx
new file mode 100644
index 0000000..3a52cb1
--- /dev/null
+++ b/common/rfb/Logger_syslog.cxx
@@ -0,0 +1,65 @@
+/* Copyright (C) 2015 TigerVNC
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ */
+
+// -=- Logger_syslog.cxx - Logger instance for a syslog
+
+#include <stdlib.h>
+#include <string.h>
+#include <syslog.h>
+
+#include <rfb/util.h>
+#include <rfb/Logger_syslog.h>
+#include <rfb/LogWriter.h>
+#include <rfb/Threading.h>
+
+using namespace rfb;
+
+
+Logger_Syslog::Logger_Syslog(const char* loggerName)
+  : Logger(loggerName)
+{
+  openlog("Xvnc", LOG_CONS | LOG_PID, LOG_USER);
+}
+
+Logger_Syslog::~Logger_Syslog()
+{
+  closelog();
+}
+
+void Logger_Syslog::write(int level, const char *logname, const char *message)
+{
+  // Convert our priority level into syslog level
+  int priority;
+  if (level >= LogWriter::LEVEL_DEBUG) {
+    priority = LOG_DEBUG;
+  } else if (level >= LogWriter::LEVEL_INFO) {
+    priority = LOG_INFO;
+  } else if (level >= LogWriter::LEVEL_STATUS) {
+    priority = LOG_NOTICE;
+  } else {
+    priority = LOG_ERR;
+  }
+
+  syslog(priority, "%s: %s", logname, message);
+}
+
+static Logger_Syslog logger("syslog");
+
+void rfb::initSyslogLogger() {
+  logger.registerLogger();
+}
diff --git a/common/rfb/Logger_syslog.h b/common/rfb/Logger_syslog.h
new file mode 100644
index 0000000..cf98728
--- /dev/null
+++ b/common/rfb/Logger_syslog.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 2015 TigerVNC
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ */
+
+// -=- Logger_syslog - log to syslog
+
+#ifndef __RFB_LOGGER_SYSLOG_H__
+#define __RFB_LOGGER_SYSLOG_H__
+
+#include <time.h>
+#include <rfb/Logger.h>
+
+namespace rfb {
+
+  class Logger_Syslog : public Logger {
+  public:
+    Logger_Syslog(const char* loggerName);
+    virtual ~Logger_Syslog();
+
+    virtual void write(int level, const char *logname, const char *message);
+  };
+
+  void initSyslogLogger();
+};
+
+#endif
