From 53dfaee95915d8e0add5189b15dce6cbf9fe2796 Mon Sep 17 00:00:00 2001 From: Prasanna Kumar Kalever Date: Thu, 1 Jun 2017 18:43:44 +0530 Subject: log: print human readable timestamp Before: ------- Epoch number, eg: [1496312036] Now: ---- Human readable, eg: [2017-06-01 18:37:46.834377] Change-Id: Ibcb3de512086f6fa36ad7169f0d9189636361331 Signed-off-by: Prasanna Kumar Kalever --- utils/utils.c | 24 ++++++++++++++++++++++++ utils/utils.h | 14 ++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/utils/utils.c b/utils/utils.c index ec85882..ce93f87 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -148,6 +148,30 @@ int blockRemoteCreateRespEnumParse(const char *opt) } +/* On any failure return, epoch atleast */ +void +logTimeNow(char *buf, size_t bufSize) +{ + struct tm tm; + struct timeval tv; + + + if (gettimeofday (&tv, NULL) < 0) { + goto out; + } + + if (tv.tv_sec && gmtime_r(&tv.tv_sec, &tm) != NULL) { + strftime (buf, bufSize, "%Y-%m-%d %H:%M:%S", &tm); + snprintf (buf + strlen(buf), bufSize - strlen(buf), ".%06d", tv.tv_usec); + return; + } + +out: + snprintf(buf, bufSize, "%lu", (unsigned long)time(NULL)); + return; +} + + int gbAlloc(void *ptrptr, size_t size, const char *filename, const char *funcname, size_t linenr) diff --git a/utils/utils.h b/utils/utils.h index ef5aadc..f44fc85 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -22,7 +22,13 @@ # include # include # include +# include +# define GB_TIME_STRING_BUFLEN \ + (4 + 1 + 2 + 1 + 2 + 1 + 2 + 1 + 2 + 1 + 2 + 1 + 6 + 1 + 5) + /* Yr Mon Day Hour Min Sec Ms NULL Round-off(32) + 2017 - 06 - 01 ' ' 18 : 58 : 29 . 695147 '\0' Power^2 + 2017-06-01 18:58:29.695147 */ /* Target Create */ # define FAILED_CREATE "failed in create" @@ -82,6 +88,7 @@ extern size_t logLevel; # define LOG(str, level, fmt, ...) \ do { \ FILE *fd; \ + char timestamp[GB_TIME_STRING_BUFLEN] = {0}; \ if (level <= logLevel) { \ if (!strcmp(str, "mgmt")) \ fd = fopen (DAEMON_LOG_FILE, "a"); \ @@ -91,8 +98,9 @@ extern size_t logLevel; fd = fopen (GFAPI_LOG_FILE, "a"); \ else \ fd = stderr; \ - fprintf(fd, "[%lu] %s: " fmt " [at %s+%d :<%s>]\n", \ - (unsigned long)time(NULL), LogLevelLookup[level],\ + logTimeNow(timestamp, GB_TIME_STRING_BUFLEN); \ + fprintf(fd, "[%s] %s: " fmt " [at %s+%d :<%s>]\n", \ + timestamp, LogLevelLookup[level], \ __VA_ARGS__, __FILE__, __LINE__, __FUNCTION__); \ if (fd != stderr) \ fclose(fd); \ @@ -392,6 +400,8 @@ int blockMetaStatusEnumParse(const char *opt); int blockRemoteCreateRespEnumParse(const char *opt); +void logTimeNow(char* buf, size_t bufSize); + int gbAlloc(void *ptrptr, size_t size, const char *filename, const char *funcname, size_t linenr); -- cgit