diff options
author | Nathan Williams <njw@chromium.org> | 2011-06-23 17:33:30 -0400 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2011-06-30 12:25:02 -0500 |
commit | 1b73fa154160a51634633a4bfd886aa1d27e72b3 (patch) | |
tree | 625fe5c11cc0ba19a7f5dc98cd74daea2a71eea3 /src | |
parent | b7820cf6e15eb245d4726f8cfbe20ce24466188b (diff) |
Add a DBus interface for setting the log level.
Lifted almost entirely from similar code in NetworkManager.
BUG=chromium-os:15197
TEST='dbus-send --print-reply --system --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager org.freedesktop.ModemManager.SetLogging string:DEBUG'
Also try valid log levels 'ERR', 'WARN', 'INFO', and an invalid log level, such as 'ABCDE'.
Change-Id: I2bddcd0319f4966dd293b119f68e7cc1697949b7
Reviewed-on: http://gerrit.chromium.org/gerrit/3134
Tested-by: Nathan J. Williams <njw@chromium.org>
Reviewed-by: Eric Shienbrood <ers@chromium.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-log.c | 37 | ||||
-rw-r--r-- | src/mm-log.h | 2 | ||||
-rw-r--r-- | src/mm-manager.c | 17 |
3 files changed, 39 insertions, 17 deletions
diff --git a/src/mm-log.c b/src/mm-log.c index 779afe72..f99f51f5 100644 --- a/src/mm-log.c +++ b/src/mm-log.c @@ -163,6 +163,24 @@ log_handler (const gchar *log_domain, } gboolean +mm_log_set_level (const char *level, GError **error) +{ + gboolean found = FALSE; + const LogDesc *diter; + + for (diter = &level_descs[0]; diter->name; diter++) { + if (!strcasecmp (diter->name, level)) { + log_level = diter->num; + found = TRUE; + break; + } + } + if (!found) + g_set_error (error, 0, 0, "Unknown log level '%s'", level); + return found; +} + +gboolean mm_log_setup (const char *level, const char *log_file, gboolean show_timestamps, @@ -170,23 +188,8 @@ mm_log_setup (const char *level, GError **error) { /* levels */ - if (level && strlen (level)) { - gboolean found = FALSE; - const LogDesc *diter; - - for (diter = &level_descs[0]; diter->name; diter++) { - if (!strcasecmp (diter->name, level)) { - log_level = diter->num; - found = TRUE; - break; - } - } - - if (!found) { - g_set_error (error, 0, 0, "Unknown log level '%s'", level); - return FALSE; - } - } + if (level && strlen (level) && !mm_log_set_level (level, error)) + return FALSE; if (show_timestamps) ts_flags = TS_FLAG_WALL; diff --git a/src/mm-log.h b/src/mm-log.h index 9b0d875f..6024c08f 100644 --- a/src/mm-log.h +++ b/src/mm-log.h @@ -47,6 +47,8 @@ void _mm_log (const char *loc, const char *fmt, ...) __attribute__((__format__ (__printf__, 4, 5))); +gboolean mm_log_set_level (const char *level, GError **error); + gboolean mm_log_setup (const char *level, const char *log_file, gboolean show_ts, diff --git a/src/mm-manager.c b/src/mm-manager.c index 52c74202..3bf042eb 100644 --- a/src/mm-manager.c +++ b/src/mm-manager.c @@ -34,6 +34,10 @@ static gboolean impl_manager_enumerate_devices (MMManager *manager, static void impl_manager_scan_devices (MMManager *manager, DBusGMethodInvocation *context); +static gboolean impl_manager_set_logging (MMManager *manager, + const char *level, + GError **error); + #include "mm-manager-glue.h" G_DEFINE_TYPE (MMManager, mm_manager, G_TYPE_OBJECT) @@ -1001,6 +1005,19 @@ impl_manager_scan_devices (MMManager *manager, } } +static gboolean +impl_manager_set_logging (MMManager *manager, + const char *level, + GError **error) +{ + if (mm_log_set_level (level, error)) { + mm_info ("logging: level '%s'", level); + return TRUE; + } + return FALSE; +} + + void mm_manager_start (MMManager *manager) { |