Logging: add colors depending on log level
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Wed, 14 Jun 2017 02:42:00 +0000 (22:42 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 14 Jun 2017 22:09:41 +0000 (18:09 -0400)
The whole line is colored and this indicates the log level.

VERBOSE: no color
DEBUG:   no color
INFO:    blue
WARN:    yellow
ERROR:   red
FATAL:   red

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
logging/log.c
python-plugin-provider/Makefile.am

index 4bd5014d9f1ed0016cf218d73e1df7f608f6f971..adac547eedf0666328ae3cdb50bad97e29cef518 100644 (file)
@@ -5,6 +5,7 @@
  */
 
 #include <babeltrace/babeltrace-internal.h>
+#include <babeltrace/common-internal.h>
 
 /* When defined, Android log (android/log.h) will be used by default instead of
  * stderr (ignored on non-Android platforms). Date, time, pid and tid (context)
@@ -1253,6 +1254,31 @@ static void _bt_log_write_imp(
        msg.lvl = lvl;
        msg.tag = tag;
        g_buffer_cb(&msg, buf);
+       const char *rst_color_p = bt_common_color_reset();
+       const char *rst_color_e = rst_color_p + strlen(rst_color_p);
+       const char *color_p = "";
+       const char *color_e = color_p;
+
+       switch (lvl) {
+       case BT_LOG_INFO:
+               color_p = bt_common_color_fg_blue();
+               color_e = color_p + strlen(color_p);
+               break;
+       case BT_LOG_WARN:
+               color_p = bt_common_color_fg_yellow();
+               color_e = color_p + strlen(color_p);
+               break;
+       case BT_LOG_ERROR:
+       case BT_LOG_FATAL:
+               color_p = bt_common_color_fg_red();
+               color_e = color_p + strlen(color_p);
+               break;
+       default:
+               break;
+       }
+
+       msg.p = put_stringn(color_p, color_e, msg.p, msg.e);
+
        if (BT_LOG_PUT_CTX & mask)
        {
                put_ctx(&msg);
@@ -1269,6 +1295,7 @@ static void _bt_log_write_imp(
        {
                put_msg(&msg, fmt, va);
        }
+       msg.p = put_stringn(rst_color_p, rst_color_e, msg.p, msg.e);
        log->output->callback(&msg, log->output->arg);
        if (0 != mem && BT_LOG_PUT_MSG & mask)
        {
index b80fb4f995b3c75a5d31c95d567e7346adce2feb..c4060cfd7a69a20f1e0b9e56d280cd87576e20e7 100644 (file)
@@ -13,5 +13,6 @@ libbabeltrace_python_plugin_provider_la_LIBADD =
 
 if !BUILT_IN_PLUGINS
 libbabeltrace_python_plugin_provider_la_LIBADD += \
-       $(top_builddir)/logging/libbabeltrace-logging.la
+       $(top_builddir)/logging/libbabeltrace-logging.la \
+       $(top_builddir)/common/libbabeltrace-common.la
 endif
This page took 0.028003 seconds and 4 git commands to generate.