about summary refs log tree commit diff
path: root/src/libnm-glib-aux/nm-logging-base.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libnm-glib-aux/nm-logging-base.c')
-rw-r--r--src/libnm-glib-aux/nm-logging-base.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/libnm-glib-aux/nm-logging-base.c b/src/libnm-glib-aux/nm-logging-base.c
index e11bd9f3..cc19ef15 100644
--- a/src/libnm-glib-aux/nm-logging-base.c
+++ b/src/libnm-glib-aux/nm-logging-base.c
@@ -6,6 +6,8 @@
 
 #include <syslog.h>
 
+#include "nm-time-utils.h"
+
 /*****************************************************************************/
 
 const LogLevelDesc nm_log_level_desc[_LOGL_N] = {
@@ -77,3 +79,61 @@ _nm_log_parse_level(const char *level, NMLogLevel *out_level)
 
     return FALSE;
 }
+
+/*****************************************************************************/
+
+volatile NMLogLevel _nm_logging_enabled_value = LOGL_TRACE;
+
+void
+_nm_logging_enabled_init(const char *level_str)
+{
+    NMLogLevel level;
+
+    if (!_nm_log_parse_level(level_str, &level))
+        level = LOGL_WARN;
+    else if (level == _LOGL_KEEP)
+        level = LOGL_WARN;
+
+    _nm_logging_enabled_value = level;
+}
+
+/*****************************************************************************/
+
+void
+_nm_log_simple_printf(NMLogLevel level, const char *fmt, ...)
+{
+    gs_free char *msg_heap = NULL;
+    char          msg_stack[700];
+    const char *  msg;
+    const char *  level_str;
+    gint64        ts;
+
+    ts = nm_utils_clock_gettime_nsec(CLOCK_BOOTTIME);
+
+    msg = nm_vsprintf_buf_or_alloc(fmt, fmt, msg_stack, &msg_heap, NULL);
+
+    switch (level) {
+    case LOGL_TRACE:
+        level_str = "<trace>";
+        break;
+    case LOGL_DEBUG:
+        level_str = "<debug>";
+        break;
+    case LOGL_INFO:
+        level_str = "<info> ";
+        break;
+    case LOGL_WARN:
+        level_str = "<warn> ";
+        break;
+    default:
+        nm_assert(level == LOGL_ERR);
+        level_str = "<error>";
+        break;
+    }
+
+    g_print("[%" G_GINT64_FORMAT ".%05" G_GINT64_FORMAT "] %s %s\n",
+            ts / NM_UTILS_NSEC_PER_SEC,
+            (ts / (NM_UTILS_NSEC_PER_SEC / 10000)) % 10000,
+            level_str,
+            msg);
+}