*
* These functions provide support for outputting messages.
*
- * The <function>g_return</function> family of macros (g_return_if_fail(),
- * g_return_val_if_fail(), g_return_if_reached(), g_return_val_if_reached())
- * should only be used for programming errors, a typical use case is
- * checking for invalid parameters at the beginning of a public function.
- * They should not be used if you just mean "if (error) return", they
- * should only be used if you mean "if (bug in program) return".
- * The program behavior is generally considered undefined after one
- * of these checks fails. They are not intended for normal control
- * flow, only to give a perhaps-helpful warning before giving up.
+ * The g_return family of macros (g_return_if_fail(),
+ * g_return_val_if_fail(), g_return_if_reached(),
+ * g_return_val_if_reached()) should only be used for programming
+ * errors, a typical use case is checking for invalid parameters at
+ * the beginning of a public function. They should not be used if
+ * you just mean "if (error) return", they should only be used if
+ * you mean "if (bug in program) return". The program behavior is
+ * generally considered undefined after one of these checks fails.
+ * They are not intended for normal control flow, only to give a
+ * perhaps-helpful warning before giving up.
*/
#include "config.h"
*/
/**
+ * G_LOG_LEVEL_USER_SHIFT:
+ *
+ * Log levels below 1<<G_LOG_LEVEL_USER_SHIFT are used by GLib.
+ * Higher bits can be used for user-defined log levels.
+ */
+
+/**
* g_message:
* @...: format string, followed by parameters to insert
* into the format string (as with printf())
*
* A convenience function/macro to log a warning message.
*
- * You can make warnings fatal at runtime by setting the
- * <envar>G_DEBUG</envar> environment variable (see
- * <ulink url="glib-running.html">Running GLib Applications</ulink>).
+ * You can make warnings fatal at runtime by setting the `G_DEBUG`
+ * environment variable (see
+ * [Running GLib Applications](glib-running.html)).
*
- * If g_log_default_handler() is used as the log handler function, a new-line
- * character will automatically be appended to @..., and need not be entered
- * manually.
+ * If g_log_default_handler() is used as the log handler function,
+ * a newline character will automatically be appended to @..., and
+ * need not be entered manually.
*/
/**
* example.
*
* You can also make critical warnings fatal at runtime by
- * setting the <envar>G_DEBUG</envar> environment variable (see
- * <ulink url="glib-running.html">Running GLib Applications</ulink>).
+ * setting the `G_DEBUG` environment variable (see
+ * [Running GLib Applications](glib-running.html)).
*
* If g_log_default_handler() is used as the log handler function, a new-line
* character will automatically be appended to @..., and need not be entered
static GLogDomain*
g_log_find_domain_L (const gchar *log_domain)
{
- register GLogDomain *domain;
+ GLogDomain *domain;
domain = g_log_domains;
while (domain)
static GLogDomain*
g_log_domain_new_L (const gchar *log_domain)
{
- register GLogDomain *domain;
+ GLogDomain *domain;
domain = g_new (GLogDomain, 1);
domain->log_domain = g_strdup (log_domain);
if (domain->fatal_mask == G_LOG_FATAL_MASK &&
domain->handlers == NULL)
{
- register GLogDomain *last, *work;
+ GLogDomain *last, *work;
last = NULL;
{
if (domain && log_level)
{
- register GLogHandler *handler;
+ GLogHandler *handler;
handler = domain->handlers;
while (handler)
* %G_LOG_LEVEL_ERROR is always fatal.
*
* You can also make some message levels fatal at runtime by setting
- * the <envar>G_DEBUG</envar> environment variable (see
- * <ulink url="glib-running.html">Running GLib Applications</ulink>).
+ * the `G_DEBUG` environment variable (see
+ * [Running GLib Applications](glib-running.html)).
*
* Returns: the old fatal mask
*/
GLogLevelFlags fatal_mask)
{
GLogLevelFlags old_flags;
- register GLogDomain *domain;
+ GLogDomain *domain;
if (!log_domain)
log_domain = "";
*
* Here is an example for adding a log handler for all warning messages
* in the default domain:
- * |[
+ * |[<!-- language="C" -->
* g_log_set_handler (NULL, G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL
* | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
* ]|
*
* This example adds a log handler for all critical messages from GTK+:
- * |[
+ * |[<!-- language="C" -->
* g_log_set_handler ("Gtk", G_LOG_LEVEL_CRITICAL | G_LOG_FLAG_FATAL
* | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
* ]|
*
* This example adds a log handler for all messages from GLib:
- * |[
+ * |[<!-- language="C" -->
* g_log_set_handler ("GLib", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL
* | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
* ]|
g_log_remove_handler (const gchar *log_domain,
guint handler_id)
{
- register GLogDomain *domain;
+ GLogDomain *domain;
g_return_if_fail (handler_id > 0);
gchar *expected_message;
mklevel_prefix (level_prefix, expected->log_level);
- expected_message = g_strdup_printf ("Did not see expected message %s: %s",
+ expected_message = g_strdup_printf ("Did not see expected message %s-%s: %s",
+ expected->log_domain ? expected->log_domain : "**",
level_prefix, expected->pattern);
- g_log_default_handler (log_domain, log_level, expected_message, NULL);
+ g_log_default_handler (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, expected_message, NULL);
g_free (expected_message);
log_level |= G_LOG_FLAG_FATAL;
for (i = g_bit_nth_msf (log_level, -1); i >= 0; i = g_bit_nth_msf (log_level, i))
{
- register GLogLevelFlags test_level;
+ GLogLevelFlags test_level;
test_level = 1 << i;
if (log_level & test_level)
const char *pretty_function,
const char *expression)
{
- g_log (log_domain,
- G_LOG_LEVEL_ERROR,
- expression
- ? "file %s: line %d (%s): assertion failed: (%s)"
- : "file %s: line %d (%s): should not be reached",
- file,
- line,
- pretty_function,
- expression);
+ if (expression)
+ g_log (log_domain,
+ G_LOG_LEVEL_ERROR,
+ "file %s: line %d (%s): assertion failed: (%s)",
+ file,
+ line,
+ pretty_function,
+ expression);
+ else
+ g_log (log_domain,
+ G_LOG_LEVEL_ERROR,
+ "file %s: line %d (%s): should not be reached",
+ file,
+ line,
+ pretty_function);
_g_log_abort (FALSE);
abort ();
}
* g_test_expect_message:
* @log_domain: (allow-none): the log domain of the message
* @log_level: the log level of the message
- * @pattern: a glob-style
- * <link linkend="glib-Glob-style-pattern-matching">pattern</link>
+ * @pattern: a glob-style [pattern][glib-Glob-style-pattern-matching]
*
* Indicates that a message with the given @log_domain and @log_level,
* with text matching @pattern, is expected to be logged. When this
*
* For example:
*
- * |[
- * /* g_main_context_push_thread_default() should fail if the
- * * context is already owned by another thread.
- * */
+ * |[<!-- language="C" -->
+ * // g_main_context_push_thread_default() should fail if the
+ * // context is already owned by another thread.
* g_test_expect_message (G_LOG_DOMAIN,
* G_LOG_LEVEL_CRITICAL,
* "assertion*acquired_context*failed");
expected = expected_messages->data;
mklevel_prefix (level_prefix, expected->log_level);
- message = g_strdup_printf ("Did not see expected message %s: %s",
+ message = g_strdup_printf ("Did not see expected message %s-%s: %s",
+ expected->log_domain ? expected->log_domain : "**",
level_prefix, expected->pattern);
- g_assertion_message (domain, file, line, func, message);
+ g_assertion_message (G_LOG_DOMAIN, file, line, func, message);
g_free (message);
}
}
*
* The behavior of this log handler can be influenced by a number of
* environment variables:
- * <variablelist>
- * <varlistentry>
- * <term><envar>G_MESSAGES_PREFIXED</envar></term>
- * <listitem>
- * A :-separated list of log levels for which messages should
- * be prefixed by the program name and PID of the aplication.
- * </listitem>
- * </varlistentry>
- * <varlistentry>
- * <term><envar>G_MESSAGES_DEBUG</envar></term>
- * <listitem>
- * A space-separated list of log domains for which debug and
- * informational messages are printed. By default these
- * messages are not printed.
- * </listitem>
- * </varlistentry>
- * </variablelist>
+ *
+ * - `G_MESSAGES_PREFIXED`: A :-separated list of log levels for which
+ * messages should be prefixed by the program name and PID of the
+ * aplication.
+ *
+ * - `G_MESSAGES_DEBUG`: A space-separated list of log domains for
+ * which debug and informational messages are printed. By default
+ * these messages are not printed.
*
* stderr is used for levels %G_LOG_LEVEL_ERROR, %G_LOG_LEVEL_CRITICAL,
* %G_LOG_LEVEL_WARNING and %G_LOG_LEVEL_MESSAGE. stdout is used for