mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-22 18:22:11 +01:00
gmessages: Add support for G_MESSAGES_USE_STDERR env variable
Make possible to run glib processes where all the GMessage's output is written to stderr. By default we do it only for log levels greater or equal than warning, but in some cases we may want to send all the glib logging to stderr. This was possible to do programmatically, but there might be still cases in which this has to be setup in the environment. So, add support for a new environment variable, without changing the ability for a program to set this to another value (at early start).
This commit is contained in:
parent
6a0ea79203
commit
2547675af9
@ -112,6 +112,24 @@ How to run and debug your GLib application
|
||||
</para>
|
||||
</formalpara>
|
||||
|
||||
<formalpara id="G_MESSAGES_USE_STDERR">
|
||||
<title><envar>G_MESSAGES_USE_STDERR</envar></title>
|
||||
|
||||
<para>
|
||||
Set it to `1` in order to use `stderr` by default to write messages of
|
||||
levels %G_LOG_LEVEL_INFO and %G_LOG_LEVEL_DEBUG (that by default are
|
||||
written to `stdin`).
|
||||
</para>
|
||||
<para>
|
||||
This value can be overridden by applications using
|
||||
g_log_writer_default_set_use_stderr().
|
||||
</para>
|
||||
<para>
|
||||
This environment variable only affects the default log handler,
|
||||
g_log_default_handler().
|
||||
</para>
|
||||
</formalpara>
|
||||
|
||||
<formalpara id="G-DEBUG:CAPS">
|
||||
<title><envar>G_DEBUG</envar></title>
|
||||
|
||||
|
@ -1169,6 +1169,20 @@ static const gchar *log_level_to_color (GLogLevelFlags log_level,
|
||||
static const gchar *color_reset (gboolean use_color);
|
||||
|
||||
static gboolean gmessages_use_stderr = FALSE;
|
||||
static gsize gmessages_use_stderr_initialized = 0;
|
||||
|
||||
static inline gboolean
|
||||
g_messages_use_stderr (void)
|
||||
{
|
||||
if (g_once_init_enter (&gmessages_use_stderr_initialized))
|
||||
{
|
||||
gmessages_use_stderr = g_strcmp0 (
|
||||
g_getenv ("G_MESSAGES_USE_STDERR"), "1") == 0;
|
||||
g_once_init_leave (&gmessages_use_stderr_initialized, TRUE);
|
||||
}
|
||||
|
||||
return gmessages_use_stderr;
|
||||
}
|
||||
|
||||
/**
|
||||
* g_log_writer_default_set_use_stderr:
|
||||
@ -1195,6 +1209,10 @@ void
|
||||
g_log_writer_default_set_use_stderr (gboolean use_stderr)
|
||||
{
|
||||
g_return_if_fail (g_thread_n_created () == 0);
|
||||
|
||||
if (g_once_init_enter (&gmessages_use_stderr_initialized))
|
||||
g_once_init_leave (&gmessages_use_stderr_initialized, TRUE);
|
||||
|
||||
gmessages_use_stderr = use_stderr;
|
||||
}
|
||||
|
||||
@ -1478,7 +1496,7 @@ log_level_to_priority (GLogLevelFlags log_level)
|
||||
static FILE *
|
||||
log_level_to_file (GLogLevelFlags log_level)
|
||||
{
|
||||
if (gmessages_use_stderr)
|
||||
if G_UNLIKELY (g_messages_use_stderr ())
|
||||
return stderr;
|
||||
|
||||
if (log_level & (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL |
|
||||
|
Loading…
x
Reference in New Issue
Block a user