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:

committed by
Dan Williams

parent
b7820cf6e1
commit
1b73fa1541
@@ -23,6 +23,18 @@
|
|||||||
<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_scan_devices"/>
|
<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_scan_devices"/>
|
||||||
</method>
|
</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">
|
<signal name="DeviceAdded">
|
||||||
<tp:docstring>
|
<tp:docstring>
|
||||||
A device was added to the system.
|
A device was added to the system.
|
||||||
|
25
src/mm-log.c
25
src/mm-log.c
@@ -163,14 +163,8 @@ log_handler (const gchar *log_domain,
|
|||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mm_log_setup (const char *level,
|
mm_log_set_level (const char *level, GError **error)
|
||||||
const char *log_file,
|
|
||||||
gboolean show_timestamps,
|
|
||||||
gboolean rel_timestamps,
|
|
||||||
GError **error)
|
|
||||||
{
|
{
|
||||||
/* levels */
|
|
||||||
if (level && strlen (level)) {
|
|
||||||
gboolean found = FALSE;
|
gboolean found = FALSE;
|
||||||
const LogDesc *diter;
|
const LogDesc *diter;
|
||||||
|
|
||||||
@@ -181,12 +175,21 @@ mm_log_setup (const char *level,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!found)
|
||||||
if (!found) {
|
|
||||||
g_set_error (error, 0, 0, "Unknown log level '%s'", level);
|
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;
|
return FALSE;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (show_timestamps)
|
if (show_timestamps)
|
||||||
ts_flags = TS_FLAG_WALL;
|
ts_flags = TS_FLAG_WALL;
|
||||||
|
@@ -47,6 +47,8 @@ void _mm_log (const char *loc,
|
|||||||
const char *fmt,
|
const char *fmt,
|
||||||
...) __attribute__((__format__ (__printf__, 4, 5)));
|
...) __attribute__((__format__ (__printf__, 4, 5)));
|
||||||
|
|
||||||
|
gboolean mm_log_set_level (const char *level, GError **error);
|
||||||
|
|
||||||
gboolean mm_log_setup (const char *level,
|
gboolean mm_log_setup (const char *level,
|
||||||
const char *log_file,
|
const char *log_file,
|
||||||
gboolean show_ts,
|
gboolean show_ts,
|
||||||
|
@@ -34,6 +34,10 @@ static gboolean impl_manager_enumerate_devices (MMManager *manager,
|
|||||||
static void impl_manager_scan_devices (MMManager *manager,
|
static void impl_manager_scan_devices (MMManager *manager,
|
||||||
DBusGMethodInvocation *context);
|
DBusGMethodInvocation *context);
|
||||||
|
|
||||||
|
static gboolean impl_manager_set_logging (MMManager *manager,
|
||||||
|
const char *level,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
#include "mm-manager-glue.h"
|
#include "mm-manager-glue.h"
|
||||||
|
|
||||||
G_DEFINE_TYPE (MMManager, mm_manager, G_TYPE_OBJECT)
|
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
|
void
|
||||||
mm_manager_start (MMManager *manager)
|
mm_manager_start (MMManager *manager)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user