diff --git a/src/sbbs3/sexyz.c b/src/sbbs3/sexyz.c
index d829544338843f7cf94c7a4870bf6c0b97755b0a..2950c8b0cdb33a3096afd83b15092bb0fb917e6d 100644
--- a/src/sbbs3/sexyz.c
+++ b/src/sbbs3/sexyz.c
@@ -90,6 +90,7 @@ BOOL	dszlog_path=TRUE;				/* Log complete path to filename	*/
 BOOL	dszlog_short=FALSE;				/* Log Micros~1 short filename		*/
 BOOL	dszlog_quotes=FALSE;			/* Quote filenames in DSZLOG		*/
 int		log_level=LOG_INFO;
+BOOL	use_syslog=FALSE;
 
 xmodem_t xm;
 zmodem_t zm;
@@ -172,6 +173,11 @@ static int lputs(void* unused, int level, const char* str)
 	if(level>log_level)
 		return 0;
 
+#if defined(__unix__)
+	if(use_syslog)
+		return syslog(level,"%s",str);
+#endif
+
     if(level<LOG_NOTICE)
 		fp=errfp;
 
@@ -1359,6 +1365,7 @@ int main(int argc, char **argv)
 	pause_on_abend			=iniReadBool(fp,ROOT_SECTION,"PauseOnAbend",FALSE);
 
 	log_level				=iniReadLogLevel(fp,ROOT_SECTION,"LogLevel",log_level);
+	use_syslog				=iniReadBool(fp,ROOT_SECTION,"SysLog",use_syslog);
 
 	outbuf.highwater_mark	=iniReadInteger(fp,ROOT_SECTION,"OutbufHighwaterMark",1100);
 	outbuf_drain_timeout	=iniReadInteger(fp,ROOT_SECTION,"OutbufDrainTimeout",10);
@@ -1507,6 +1514,10 @@ int main(int argc, char **argv)
 					log_level=LOG_DEBUG;
 					continue;
 				}
+				if(stricmp(arg,"syslog")==0) {
+					use_syslog=TRUE;
+					continue;
+				}
 				if(stricmp(arg,"quotes")==0) {
 					dszlog_quotes=TRUE;
 					continue;