[telepathy-glib/master] Add tp_debug_sender_log_handler.
Jonny Lamb
jonny.lamb at collabora.co.uk
Mon Aug 24 07:10:29 PDT 2009
Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
docs/reference/telepathy-glib-sections.txt | 1 +
telepathy-glib/debug-sender.c | 49 ++++++++++++++++++++++++++++
telepathy-glib/debug-sender.h | 3 ++
3 files changed, 53 insertions(+), 0 deletions(-)
diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index 6247db8..09efc97 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -3287,6 +3287,7 @@ TpDebugSender
TpDebugMessage
tp_debug_sender_dup
tp_debug_sender_add_message
+tp_debug_sender_log_handler
<SUBSECTION Standard>
tp_debug_sender_get_type
TP_DEBUG_SENDER
diff --git a/telepathy-glib/debug-sender.c b/telepathy-glib/debug-sender.c
index fbe2301..7bc41c3 100644
--- a/telepathy-glib/debug-sender.c
+++ b/telepathy-glib/debug-sender.c
@@ -396,3 +396,52 @@ tp_debug_sender_add_message (TpDebugSender *self,
domain, new_msg->level, string);
}
}
+
+/**
+ * tp_debug_sender_log_handler:
+ * log_domain: domain of the message
+ * log_level: log leve of the message
+ * message: the message itself
+ * exclude: a string of log domains to exclude
+ *
+ * A generic log handler designed to be used by CMs. It initially calls
+ * g_log_default_handler(), and then sends the message on the bus
+ * #TpDebugSender.
+ *
+ * The @exclude parameter is designed to allow filtering of domains, instead of
+ * sending every message to the #TpDebugSender. Note that every message,
+ * regardless of domain, is given to g_log_default_hander().
+ *
+ * An example of its usage follows:
+ * |[
+ * TpDebugSender *sender = tp_debug_sender_dup ();
+ * g_log_set_default_handler (tp_debug_sender_log_handler, G_LOG_DOMAIN);
+ * ]|
+ *
+ * Since: 0.7.UNRELEASED
+ */
+void
+tp_debug_sender_log_handler (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer exclude)
+{
+ const gchar *domain_exclude = NULL;
+
+ g_log_default_handler (log_domain, log_level, message, NULL);
+
+ if (debug_sender == NULL)
+ return;
+
+ if (exclude != NULL)
+ domain_exclude = (gchar *) exclude;
+
+ if (domain_exclude != NULL && tp_strdiff (log_domain, domain_exclude))
+ {
+ GTimeVal now;
+ g_get_current_time (&now);
+
+ tp_debug_sender_add_message (debug_sender, &now, log_domain, log_level,
+ message);
+ }
+}
diff --git a/telepathy-glib/debug-sender.h b/telepathy-glib/debug-sender.h
index 9915d27..d469431 100644
--- a/telepathy-glib/debug-sender.h
+++ b/telepathy-glib/debug-sender.h
@@ -76,6 +76,9 @@ void tp_debug_sender_add_message (TpDebugSender *self,
GLogLevelFlags level,
const gchar *string);
+void tp_debug_sender_log_handler (const gchar *log_domain,
+ GLogLevelFlags log_level, const gchar *message, gpointer exclude);
+
G_END_DECLS
#endif /* __TP_DEBUG_SENDER_H__ */
--
1.5.6.5
More information about the telepathy-commits
mailing list