Ticket #921: New logging option/flag to include caller thread ID


git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2842 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjlib/src/pj/log.c b/pjlib/src/pj/log.c
index 303d893..8025b23 100644
--- a/pjlib/src/pj/log.c
+++ b/pjlib/src/pj/log.c
@@ -33,7 +33,7 @@
 static pj_log_func *log_writer = &pj_log_write;
 static unsigned log_decor = PJ_LOG_HAS_TIME | PJ_LOG_HAS_MICRO_SEC |
 			    PJ_LOG_HAS_SENDER | PJ_LOG_HAS_NEWLINE |
-			    PJ_LOG_HAS_SPACE 
+			    PJ_LOG_HAS_SPACE
 #if defined(PJ_WIN32) && PJ_WIN32!=0
 			    | PJ_LOG_HAS_COLOR
 #endif
@@ -220,6 +220,22 @@
 		*pre++ = *sender++;
 	}
     }
+    if (log_decor & PJ_LOG_HAS_THREAD_ID) {
+	enum { THREAD_WIDTH = 12 };
+	const char *thread_name = pj_thread_get_name(pj_thread_this());
+	int thread_len = strlen(thread_name);
+	*pre++ = ' ';
+	if (thread_len <= THREAD_WIDTH) {
+	    while (thread_len < THREAD_WIDTH)
+		*pre++ = ' ', ++thread_len;
+	    while (*thread_name)
+		*pre++ = *thread_name++;
+	} else {
+	    int i;
+	    for (i=0; i<THREAD_WIDTH; ++i)
+		*pre++ = *thread_name++;
+	}
+    }
 
     if (log_decor != 0 && log_decor != PJ_LOG_HAS_NEWLINE)
 	*pre++ = ' ';