From: antirez <antirez@gmail.com>
Date: Wed, 4 Apr 2012 13:11:17 +0000 (+0200)
Subject: Print milliseconds of the current second in log lines timestamps. Sometimes precise... 
X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/9a322ab73093f15726348d08065b6a90c9894860?hp=-c

Print milliseconds of the current second in log lines timestamps. Sometimes precise timing is very important for debugging.
---

9a322ab73093f15726348d08065b6a90c9894860
diff --git a/src/redis.c b/src/redis.c
index ce33d1ef..b263c0ab 100644
--- a/src/redis.c
+++ b/src/redis.c
@@ -253,7 +253,6 @@ struct redisCommand redisCommandTable[] = {
 void redisLogRaw(int level, const char *msg) {
     const int syslogLevelMap[] = { LOG_DEBUG, LOG_INFO, LOG_NOTICE, LOG_WARNING };
     const char *c = ".-*#";
-    time_t now = time(NULL);
     FILE *fp;
     char buf[64];
     int rawmode = (level & REDIS_LOG_RAW);
@@ -267,7 +266,12 @@ void redisLogRaw(int level, const char *msg) {
     if (rawmode) {
         fprintf(fp,"%s",msg);
     } else {
-        strftime(buf,sizeof(buf),"%d %b %H:%M:%S",localtime(&now));
+        int off;
+        struct timeval tv;
+
+        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);
     }
     fflush(fp);