parent
0f78c2b140
commit
c3f6e69d3a
@ -0,0 +1,70 @@
|
||||
From 8b0d3a904e512977383954fc5c1aed20092145eb Mon Sep 17 00:00:00 2001
|
||||
From: Christian Persch <chpe@src.gnome.org>
|
||||
Date: Thu, 9 Apr 2020 21:04:32 +0200
|
||||
Subject: [PATCH] client: legacy: Suppress debug message spam
|
||||
|
||||
The glib log writer API has a deficiency in that the filtering is
|
||||
done in the default log writer, instead of only passing messages
|
||||
that pass the filter. This is filed as glib#2087, but until that
|
||||
is fixed, apply a simple log level filter to work around it.
|
||||
|
||||
Patch by Kim Nguyen <https://gitlab.gnome.org/kim.nguyen>
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/gnome-terminal/-/issues/42
|
||||
---
|
||||
src/terminal-options.c | 26 +++++++++++++++++++++++++-
|
||||
1 file changed, 25 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/terminal-options.c b/src/terminal-options.c
|
||||
index 8d506d82..fe3cad92 100644
|
||||
--- a/src/terminal-options.c
|
||||
+++ b/src/terminal-options.c
|
||||
@@ -63,10 +63,33 @@ terminal_fprintf (FILE* fp,
|
||||
}
|
||||
|
||||
#if GLIB_CHECK_VERSION (2, 50, 0)
|
||||
+static TerminalVerbosity
|
||||
+verbosity_from_log_level (GLogLevelFlags log_level)
|
||||
+{
|
||||
+ guint level = log_level & G_LOG_LEVEL_MASK;
|
||||
+ TerminalVerbosity res;
|
||||
+ level = level & ~(level - 1); /* extract the highest bit */
|
||||
+ switch (level) {
|
||||
+ case G_LOG_LEVEL_DEBUG:
|
||||
+ res = TERMINAL_VERBOSITY_DEBUG;
|
||||
+ break;
|
||||
+ case G_LOG_LEVEL_INFO:
|
||||
+ res = TERMINAL_VERBOSITY_DETAIL;
|
||||
+ break;
|
||||
+ default:
|
||||
+ /* better display than lose important messages */
|
||||
+ res = TERMINAL_VERBOSITY_NORMAL;
|
||||
+ }
|
||||
+ return res;
|
||||
+}
|
||||
|
||||
/* Need to install a special log writer so we never output
|
||||
* anything without the '# ' prepended, in case --print-environment
|
||||
* is used.
|
||||
+ *
|
||||
+ * FIXME: Until issue glib#2087 is fixed, apply a simple log level filter
|
||||
+ * to prevent spamming dconf (and other) debug messages to stderr,
|
||||
+ * see issue gnome-terminal#42.
|
||||
*/
|
||||
GLogWriterOutput
|
||||
terminal_log_writer (GLogLevelFlags log_level,
|
||||
@@ -74,9 +97,10 @@ terminal_log_writer (GLogLevelFlags log_level,
|
||||
gsize n_fields,
|
||||
gpointer user_data)
|
||||
{
|
||||
+ TerminalVerbosity level = verbosity_from_log_level(log_level);
|
||||
for (gsize i = 0; i < n_fields; i++) {
|
||||
if (g_str_equal (fields[i].key, "MESSAGE"))
|
||||
- terminal_printerr ("%s\n", (const char*)fields[i].value);
|
||||
+ terminal_fprintf (stderr, level, "%s\n", (const char*)fields[i].value);
|
||||
}
|
||||
|
||||
return G_LOG_WRITER_HANDLED;
|
||||
--
|
||||
2.40.1
|
||||
|
Loading…
Reference in new issue