diff options
Diffstat (limited to 'src/libnm-glib-aux/nm-logging-base.c')
| -rw-r--r-- | src/libnm-glib-aux/nm-logging-base.c | 60 |
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); +} |