summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-06-01 18:43:44 +0530
committerPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-06-05 23:00:19 +0530
commit53dfaee95915d8e0add5189b15dce6cbf9fe2796 (patch)
tree1f365c8c3f35b12f62914a6f3761f9b11b0f5b9f /utils
parentb5337c894f66661fb6a863467bcfac3fa12eaa7c (diff)
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 <prasanna.kalever@redhat.com>
Diffstat (limited to 'utils')
-rw-r--r--utils/utils.c24
-rw-r--r--utils/utils.h14
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 <unistd.h>
# include <errno.h>
# include <time.h>
+# include <sys/time.h>
+# 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);