diff --git a/main/logger.c b/main/logger.c
index fdac22c6d3..12410cab66 100644
--- a/main/logger.c
+++ b/main/logger.c
@@ -315,7 +315,6 @@ static struct logchannel *make_logchannel(const char *channel, const char *compo
 
 		chan->type = LOGTYPE_SYSLOG;
 		ast_copy_string(chan->filename, channel, sizeof(chan->filename));
-		openlog("asterisk", LOG_PID, chan->facility);
 	} else {
 		const char *log_dir_prefix = "";
 		const char *log_dir_separator = "";
@@ -1299,7 +1298,7 @@ static struct sigaction handle_SIGXFSZ = {
 	.sa_flags = SA_RESTART,
 };
 
-static void ast_log_vsyslog(struct logmsg *msg)
+static void ast_log_vsyslog(struct logmsg *msg, int facility)
 {
 	char buf[BUFSIZ];
 	int syslog_level = ast_syslog_priority_from_loglevel(msg->level);
@@ -1317,6 +1316,8 @@ static void ast_log_vsyslog(struct logmsg *msg)
 		return;
 	}
 
+	syslog_level = LOG_MAKEPRI(facility, syslog_level);
+
 	snprintf(buf, sizeof(buf), "%s[%d]%s: %s:%d in %s: %s",
 		 levels[msg->level], msg->lwp, call_identifier_str, msg->file, msg->line, msg->function, msg->message);
 
@@ -1402,7 +1403,7 @@ static void logger_print_normal(struct logmsg *logmsg)
 
 			/* Check syslog channels */
 			if (chan->type == LOGTYPE_SYSLOG && (chan->logmask & (1 << logmsg->level))) {
-				ast_log_vsyslog(logmsg);
+				ast_log_vsyslog(logmsg, chan->facility);
 			/* Console channels */
 			} else if (chan->type == LOGTYPE_CONSOLE && (chan->logmask & (1 << logmsg->level))) {
 				char linestr[128];