New function to install an alternate default log handler. (#66387, Darin
authorMatthias Clasen <maclas@gmx.de>
Sun, 5 Sep 2004 05:46:33 +0000 (05:46 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sun, 5 Sep 2004 05:46:33 +0000 (05:46 +0000)
Sun Sep  5 01:46:11 2004  Matthias Clasen  <maclas@gmx.de>

* glib/glib.def:
* glib/gmessages.h:
* glib/gmessages.c (g_log_set_default_handler): New
function to install an alternate default log
handler.  (#66387, Darin Adler)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/reference/ChangeLog
docs/reference/glib/glib-sections.txt
docs/reference/glib/tmpl/messages.sgml
glib/glib.def
glib/gmessages.c
glib/gmessages.h

index 03bc2de09c97288641d87c98480f4f05e779eada..25ad832a26e9264ea514704cb2bc6e3ff56caf0f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Sun Sep  5 01:46:11 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/glib.def: 
+       * glib/gmessages.h: 
+       * glib/gmessages.c (g_log_set_default_handler): New
+       function to install an alternate default log 
+       handler.  (#66387, Darin Adler)
+
 2004-09-03  Tor Lillqvist  <tml@iki.fi>
 
        * glib/glib.def: Update.
index 03bc2de09c97288641d87c98480f4f05e779eada..25ad832a26e9264ea514704cb2bc6e3ff56caf0f 100644 (file)
@@ -1,3 +1,11 @@
+Sun Sep  5 01:46:11 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/glib.def: 
+       * glib/gmessages.h: 
+       * glib/gmessages.c (g_log_set_default_handler): New
+       function to install an alternate default log 
+       handler.  (#66387, Darin Adler)
+
 2004-09-03  Tor Lillqvist  <tml@iki.fi>
 
        * glib/glib.def: Update.
index 03bc2de09c97288641d87c98480f4f05e779eada..25ad832a26e9264ea514704cb2bc6e3ff56caf0f 100644 (file)
@@ -1,3 +1,11 @@
+Sun Sep  5 01:46:11 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/glib.def: 
+       * glib/gmessages.h: 
+       * glib/gmessages.c (g_log_set_default_handler): New
+       function to install an alternate default log 
+       handler.  (#66387, Darin Adler)
+
 2004-09-03  Tor Lillqvist  <tml@iki.fi>
 
        * glib/glib.def: Update.
index 03bc2de09c97288641d87c98480f4f05e779eada..25ad832a26e9264ea514704cb2bc6e3ff56caf0f 100644 (file)
@@ -1,3 +1,11 @@
+Sun Sep  5 01:46:11 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/glib.def: 
+       * glib/gmessages.h: 
+       * glib/gmessages.c (g_log_set_default_handler): New
+       function to install an alternate default log 
+       handler.  (#66387, Darin Adler)
+
 2004-09-03  Tor Lillqvist  <tml@iki.fi>
 
        * glib/glib.def: Update.
index 03bc2de09c97288641d87c98480f4f05e779eada..25ad832a26e9264ea514704cb2bc6e3ff56caf0f 100644 (file)
@@ -1,3 +1,11 @@
+Sun Sep  5 01:46:11 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/glib.def: 
+       * glib/gmessages.h: 
+       * glib/gmessages.c (g_log_set_default_handler): New
+       function to install an alternate default log 
+       handler.  (#66387, Darin Adler)
+
 2004-09-03  Tor Lillqvist  <tml@iki.fi>
 
        * glib/glib.def: Update.
index cbdaea651433a90b9d85b01ddc622a9c70ea21f0..7a54b5b86410baffdefca5ed34cdcf7b01c123d3 100644 (file)
@@ -1,3 +1,8 @@
+Sun Sep  5 01:44:23 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/glib-sections.txt: 
+       * glib/tmpl/messages.sgml: Document g_log_set_default_handler().
+
 Wed Sep  1 20:27:59 2004  Matthias Clasen  <maclas@gmx.de>
 
        * glib/glib-sections.txt: Add g_date_get_iso8601_week_of_year.
index cabafd4cfb0de86489b0f04ed4cdef2802d0961c..f5eb2c275e6089cd743d2734916121a3fae5195e 100644 (file)
@@ -853,6 +853,7 @@ g_log_remove_handler
 g_log_set_always_fatal
 g_log_set_fatal_mask
 g_log_default_handler
+g_log_set_default_handler
 </SECTION>
 
 <SECTION>
index f197c62280f4356610bc0fb0a6e2cb8c6aa9e148..7575a6cb6ee82a693391d22f5c580456ecd703f0 100644 (file)
@@ -6,7 +6,8 @@ versatile support for logging messages with different levels of importance.
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-These functions provide support for logging error messages or messages used for debugging. 
+These functions provide support for logging error messages or messages 
+used for debugging. 
 </para>
 
 <para>
@@ -159,15 +160,18 @@ A convenience function/macro to log a debug message.
 <para>
 Sets the log handler for a domain and a set of log levels.
 To handle fatal and recursive messages the @log_levels parameter
-must be combined with the #G_LOG_FLAG_FATAL and #G_LOG_FLAG_RECURSION bit flags.
+must be combined with the #G_LOG_FLAG_FATAL and #G_LOG_FLAG_RECURSION 
+bit flags.
 </para>
 <para>
-Note that since the #G_LOG_LEVEL_ERROR log level is always fatal, if you want
-to set a handler for this log level you must combine it with #G_LOG_FLAG_FATAL.
+Note that since the #G_LOG_LEVEL_ERROR log level is always fatal, if 
+you want to set a handler for this log level you must combine it with 
+#G_LOG_FLAG_FATAL.
 </para>
 
 <example>
-<title>Adding a log handler for all warning messages in the default (application) domain</title>
+<title>Adding a log handler for all warning messages in the default 
+(application) domain</title>
 <programlisting>
   g_log_set_handler (NULL, G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL
                      | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
@@ -183,7 +187,8 @@ to set a handler for this log level you must combine it with #G_LOG_FLAG_FATAL.
 </example>
 
 <example>
-<title>Adding a log handler for <emphasis>all</emphasis> messages from GLib</title>
+<title>Adding a log handler for <emphasis>all</emphasis> messages from 
+GLib</title>
 <programlisting>
   g_log_set_handler ("GLib", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL
                      | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
@@ -234,7 +239,8 @@ Sets the log levels which are fatal in the given domain.
 
 <!-- ##### FUNCTION g_log_default_handler ##### -->
 <para>
-The default log handler.
+The default log handler set up by GLib; g_log_set_default_handler() 
+allows to install an alternate default log handler.
 This is used if no log handler has been set for the particular log domain
 and log level combination. It outputs the message to stderr or stdout
 and if the log level is fatal it calls <function>abort()</function>.
@@ -243,10 +249,22 @@ and if the log level is fatal it calls <function>abort()</function>.
 stderr is used for levels %G_LOG_LEVEL_ERROR, %G_LOG_LEVEL_CRITICAL, and
 %G_LOG_LEVEL_WARNING. stdout is used for the rest.
 </para>
+<para>
 
 @log_domain: the log domain of the message.
 @log_level: the level of the message.
 @message: the message.
 @unused_data: data passed from g_log() which is unused.
 
+<!-- ##### FUNCTION g_log_set_default_handler ##### -->
+<para>
+Installs a default log handler which is used is used if no 
+log handler has been set for the particular log domain
+and log level combination. By default, GLib uses 
+g_log_default_handler() as default log handler.
+</para>
 
+@log_func: the log handler function.
+@user_data: data passed to the log handler.
+@Returns: the previous default log handler
+@Since: 2.6
index f77982da2f08709e33ad0aa7a775c1921306cbe2..f2639f97522d51870051ded5d405bde0856f45c9 100644 (file)
@@ -317,6 +317,7 @@ EXPORTS
        g_log_default_handler
        g_log_remove_handler
        g_log_set_always_fatal
+       g_log_set_default_handler
        g_log_set_fatal_mask
        g_log_set_handler
        g_logv
index fffd4027585bc35d32b49066dabbe6e4e5a7ed62..00db52ddf30169723180a18211ba606d1420658f 100644 (file)
@@ -81,7 +81,8 @@ static GPrintFunc     glib_print_func = NULL;
 static GPrintFunc     glib_printerr_func = NULL;
 static GPrivate             *g_log_depth = NULL;
 static GLogLevelFlags g_log_msg_prefix = G_LOG_LEVEL_ERROR | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_DEBUG;
-
+static GLogFunc       default_log_func = g_log_default_handler;
+static gpointer       default_log_data = NULL;
 
 /* --- functions --- */
 #ifdef G_OS_WIN32
@@ -284,7 +285,9 @@ g_log_domain_get_handler_L (GLogDomain      *domain,
          handler = handler->next;
        }
     }
-  return g_log_default_handler;
+
+  *data = default_log_data;
+  return default_log_func;
 }
 
 GLogLevelFlags
@@ -375,6 +378,21 @@ g_log_set_handler (const gchar      *log_domain,
   return handler_id;
 }
 
+GLogFunc
+g_log_set_default_handler (GLogFunc log_func,
+                          gpointer user_data)
+{
+  GLogFunc old_log_func;
+  
+  g_mutex_lock (g_messages_lock);
+  old_log_func = default_log_func;
+  default_log_func = log_func;
+  default_log_data = user_data;
+  g_mutex_unlock (g_messages_lock);
+  
+  return old_log_func;
+}
+
 void
 g_log_remove_handler (const gchar *log_domain,
                      guint        handler_id)
index c3606291b9a9bc0f93177e98df28bc3b6ba882d9..ab76c4c443455eb003969f7630183e6813157a5f 100644 (file)
@@ -88,6 +88,8 @@ void            g_log_default_handler   (const gchar    *log_domain,
                                          GLogLevelFlags  log_level,
                                          const gchar    *message,
                                          gpointer        unused_data);
+GLogFunc        g_log_set_default_handler (GLogFunc      log_func,
+                                          gpointer      user_data);
 void            g_log                   (const gchar    *log_domain,
                                          GLogLevelFlags  log_level,
                                          const gchar    *format,