[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