From d98fa718e0e3034b1e21effa3ed3ce6d0c096791 Mon Sep 17 00:00:00 2001
From: antirez <antirez@gmail.com>
Date: Thu, 22 May 2014 18:48:37 +0200
Subject: [PATCH] Tag every log line with role.

Every log contains, just after the pid, a single character that provides
information about the role of an instance:

S - Slave
M - Master
C - Writing child
X - Sentinel
---
 src/redis.c | 13 ++++++++++++-
 src/redis.h |  1 +
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/redis.c b/src/redis.c
index 7ffaea02..19c92973 100644
--- a/src/redis.c
+++ b/src/redis.c
@@ -304,11 +304,21 @@ void redisLogRaw(int level, const char *msg) {
     } else {
         int off;
         struct timeval tv;
+        int role_char;
+        pid_t pid = getpid();
 
         gettimeofday(&tv,NULL);
         off = strftime(buf,sizeof(buf),"%d %b %H:%M:%S.",localtime(&tv.tv_sec));
         snprintf(buf+off,sizeof(buf)-off,"%03d",(int)tv.tv_usec/1000);
-        fprintf(fp,"[%d] %s %c %s\n",(int)getpid(),buf,c[level],msg);
+        if (server.sentinel_mode) {
+            role_char = 'X'; /* Sentinel. */
+        } else if (pid != server.pid) {
+            role_char = 'C'; /* RDB / AOF writing child. */
+        } else {
+            role_char = (server.masterhost ? 'S':'M'); /* Slave or Master. */
+        }
+        fprintf(fp,"%d:%c %s %c %s\n",
+            (int)getpid(),role_char, buf,c[level],msg);
     }
     fflush(fp);
 
@@ -1687,6 +1697,7 @@ void initServer() {
             server.syslog_facility);
     }
 
+    server.pid = getpid();
     server.current_client = NULL;
     server.clients = listCreate();
     server.clients_to_close = listCreate();
diff --git a/src/redis.h b/src/redis.h
index aede36b0..cdf7cb5c 100644
--- a/src/redis.h
+++ b/src/redis.h
@@ -619,6 +619,7 @@ struct clusterState;
 
 struct redisServer {
     /* General */
+    pid_t pid;                  /* Main process pid. */
     char *configfile;           /* Absolute config file path, or NULL */
     int hz;                     /* serverCron() calls frequency in hertz */
     redisDb *db;