Add dlog target to common murphy logging 63/118263/3
authorVolodymyr Brynza <v.brynza@samsung.com>
Thu, 9 Mar 2017 14:06:01 +0000 (16:06 +0200)
committerVolodymyr Brynza <v.brynza@samsung.com>
Fri, 12 May 2017 08:49:07 +0000 (11:49 +0300)
Change-Id: Id48b150bda810c7ea33798a0493f07b56d0e6482
Signed-off-by: Volodymyr Brynza <v.brynza@samsung.com>
src/Makefile.am
src/common/log.c
src/common/mm.c

index 07be7eafaa3c424bb0d2a9e76540e45d2e6acff7..fa92652ebbf858e39e5caa5cada240234b3e596e 100644 (file)
@@ -130,6 +130,10 @@ webconsole_DATA =                          \
                plugins/console/console.html
 endif
 
+if DLOG_ENABLED
+libmurphy_common_la_CFLAGS += $(DLOG_CFLAGS) -DDLOG_ENABLED
+libmurphy_common_la_LIBADD += $(DLOG_LIBS)
+endif
 
 # linker script generation
 linker-script.common: $(libmurphy_common_la_HEADERS)
index e35c43aee06d9aadf993afee2ddf2be8b35f1be6..1e32172090af1daa3c5effbc4459cafd94aacd89 100644 (file)
 #include <stdarg.h>
 #include <syslog.h>
 
+#ifdef DLOG_ENABLED
+#include <dlog.h>
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "MURPHY_COMMON"
+#define DLOG_TARGET "dlog_common"
+#endif
+
 #include <murphy/common/mm.h>
 #include <murphy/common/list.h>
 #include <murphy/common/log.h>
@@ -50,6 +59,9 @@ static log_target_t stderr_target;
 static log_target_t stdout_target;
 static log_target_t syslog_target;
 static log_target_t file_target;
+#ifdef DLOG_ENABLED
+static log_target_t dlog_target;
+#endif
 
 static MRP_LIST_HOOK(log_targets);
 static int           log_mask   = MRP_LOG_MASK_ERROR;
@@ -374,6 +386,34 @@ void mrp_log_msg(mrp_log_level_t level, const char *file,
 }
 
 
+#ifdef DLOG_ENABLED
+static void log_msg_dlog(void *data, mrp_log_level_t level, const char *file,
+                         int line, const char *func, const char *format,
+                         va_list ap)
+{
+    va_list cp;
+    int     prio;
+    char    fbuf[1024];
+
+    MRP_UNUSED(data);
+
+    va_copy(cp, ap);
+    switch (level) {
+    case MRP_LOG_ERROR:   prio = DLOG_ERROR;    break;
+    case MRP_LOG_WARNING: prio = DLOG_WARN;     break;
+    case MRP_LOG_INFO:    prio = DLOG_INFO;     break;
+    case MRP_LOG_DEBUG:   prio = DLOG_DEBUG;    break;
+    default:              prio = DLOG_INFO;
+    }
+
+    snprintf(fbuf, sizeof(fbuf), "%s: %s(%d) > %s", file, func, line, format);
+    dlog_vprint(prio, LOG_TAG, fbuf, cp);
+
+    va_end(cp);
+}
+#endif
+
+
 /*
  * workaround for not being able to initialize log_fp to stderr
  */
@@ -404,10 +444,23 @@ static __attribute__((constructor)) void set_default_logging(void)
     file_target.data    = NULL;
     file_target.builtin = TRUE;
 
+#ifdef DLOG_ENABLED
+    mrp_list_init(&dlog_target.hook);
+    dlog_target.name    = DLOG_TARGET;
+    dlog_target.logger  = log_msg_dlog;
+    dlog_target.data    = NULL;
+    dlog_target.builtin = TRUE;
+    mrp_list_prepend(&log_targets, &dlog_target.hook);
+#endif
+
     mrp_list_prepend(&log_targets, &file_target.hook);
     mrp_list_prepend(&log_targets, &syslog_target.hook);
     mrp_list_prepend(&log_targets, &stderr_target.hook);
     mrp_list_prepend(&log_targets, &stdout_target.hook);
 
+#ifdef DLOG_ENABLED
+    log_target = &dlog_target;
+#else
     log_target = &stderr_target;
+#endif
 }
index e047bf94af74a1c87b33f598e14e768ec4032e89..a1a98a208e4abf430a22ee5e45c50fdea2cee960 100644 (file)
@@ -540,7 +540,7 @@ static void __passthru_free(void *ptr, const char *file, int line,
     if (mprobe(ptr) == MCHECK_OK)
         free(ptr);
     else {
-        mrp_log_error("Invalid pointer passed to fuction free");
+        mrp_log_warning("Invalid pointer passed to fuction free");
     }
 }