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>
This commit is contained in:
Nathan Williams
2011-06-23 17:33:30 -04:00
committed by Dan Williams
parent b7820cf6e1
commit 1b73fa1541
4 changed files with 51 additions and 17 deletions

View File

@@ -23,6 +23,18 @@
<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_scan_devices"/>
</method>
<method name="SetLogging">
<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_set_logging"/>
<tp:docstring>
Set logging verbosity.
</tp:docstring>
<arg name="level" type="s" direction="in">
<tp:docstring>
One of [ERR, WARN, INFO, DEBUG].
</tp:docstring>
</arg>
</method>
<signal name="DeviceAdded">
<tp:docstring>
A device was added to the system.

View File

@@ -163,14 +163,8 @@ log_handler (const gchar *log_domain,
}
gboolean
mm_log_setup (const char *level,
const char *log_file,
gboolean show_timestamps,
gboolean rel_timestamps,
GError **error)
mm_log_set_level (const char *level, GError **error)
{
/* levels */
if (level && strlen (level)) {
gboolean found = FALSE;
const LogDesc *diter;
@@ -181,12 +175,21 @@ mm_log_setup (const char *level,
break;
}
}
if (!found) {
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,
gboolean rel_timestamps,
GError **error)
{
/* levels */
if (level && strlen (level) && !mm_log_set_level (level, error))
return FALSE;
}
}
if (show_timestamps)
ts_flags = TS_FLAG_WALL;

View File

@@ -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,

View File

@@ -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)
{