diff --git a/main/logger.c b/main/logger.c
index c753e965c0459f04a2ccae3bd0d07816c2b1d06e..1539654e799af989fab52ed55a56fc1ead6a6ab9 100644
--- a/main/logger.c
+++ b/main/logger.c
@@ -997,6 +997,13 @@ static void ast_log_vsyslog(struct logmsg *msg)
 {
 	char buf[BUFSIZ];
 	int syslog_level = ast_syslog_priority_from_loglevel(msg->level);
+	char call_identifier_str[13];
+
+	if (msg->callid) {
+		snprintf(call_identifier_str, sizeof(call_identifier_str), "[C-%08x]", msg->callid->call_identifier);
+	} else {
+		call_identifier_str[0] = '\0';
+	}
 
 	if (syslog_level < 0) {
 		/* we are locked here, so cannot ast_log() */
@@ -1004,8 +1011,8 @@ static void ast_log_vsyslog(struct logmsg *msg)
 		return;
 	}
 
-	snprintf(buf, sizeof(buf), "%s[%d]: %s:%d in %s: %s",
-		 levels[msg->level], msg->lwp, msg->file, msg->line, msg->function, msg->message);
+	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);
 
 	term_strip(buf, buf, strlen(buf) + 1);
 	syslog(syslog_level, "%s", buf);