aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNathan Williams <njw@chromium.org>2011-06-23 17:33:30 -0400
committerDan Williams <dcbw@redhat.com>2011-06-30 12:25:02 -0500
commit1b73fa154160a51634633a4bfd886aa1d27e72b3 (patch)
tree625fe5c11cc0ba19a7f5dc98cd74daea2a71eea3 /src
parentb7820cf6e15eb245d4726f8cfbe20ce24466188b (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.c37
-rw-r--r--src/mm-log.h2
-rw-r--r--src/mm-manager.c17
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)
{