From defaee09e5a95d00bcd3c3cafd107bfc40cd59f8 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 4 May 2010 12:06:00 -0700 Subject: [PATCH] logging: correctly print new logging level and domains on changes Previously the input would simply be printed, but if you're not changing either the level or domains (ie sending "") then the unchanged logging domains wouldn't be printed, only "". --- src/logging/nm-logging.c | 30 ++++++++++++++++++++++++++++++ src/logging/nm-logging.h | 3 +++ src/nm-manager.c | 7 ++++++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/logging/nm-logging.c b/src/logging/nm-logging.c index ac30eb42c6..c82084456b 100644 --- a/src/logging/nm-logging.c +++ b/src/logging/nm-logging.c @@ -179,6 +179,36 @@ nm_logging_setup (const char *level, const char *domains, GError **error) return TRUE; } +const char * +nm_logging_level_to_string (void) +{ + const LogDesc *diter; + + for (diter = &level_descs[0]; diter->name; diter++) { + if (diter->num == log_level) + return diter->name; + } + g_warn_if_reached (); + return ""; +} + +char * +nm_logging_domains_to_string (void) +{ + const LogDesc *diter; + GString *str; + + str = g_string_sized_new (75); + for (diter = &domain_descs[0]; diter->name; diter++) { + if (diter->num & log_domains) { + if (str->len) + g_string_append_c (str, ','); + g_string_append (str, diter->name); + } + } + return g_string_free (str, FALSE); +} + void _nm_log (const char *loc, const char *func, guint32 domain, diff --git a/src/logging/nm-logging.h b/src/logging/nm-logging.h index 2dc52d1e53..2eedf5ff14 100644 --- a/src/logging/nm-logging.h +++ b/src/logging/nm-logging.h @@ -88,6 +88,9 @@ void _nm_log (const char *loc, const char *func, guint32 domain, guint32 level, const char *fmt, ...); +const char *nm_logging_level_to_string (void); +char *nm_logging_domains_to_string (void); + /* Undefine the nm-utils.h logging stuff to ensure errors */ #undef nm_print_backtrace #undef nm_get_timestamp diff --git a/src/nm-manager.c b/src/nm-manager.c index abe505bba5..f158e50982 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -2774,7 +2774,12 @@ impl_manager_set_logging (NMManager *manager, GError **error) { if (nm_logging_setup (level, domains, error)) { - nm_log_info (LOGD_CORE, "logging: level '%s' domains '%s'", level, domains); + char *new_domains = nm_logging_domains_to_string (); + + nm_log_info (LOGD_CORE, "logging: level '%s' domains '%s'", + nm_logging_level_to_string (), + new_domains); + g_free (new_domains); return TRUE; } return FALSE;