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();
+}
