[gnome-terminal/gnome-3-36] client: legacy: Suppress debug message spam
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal/gnome-3-36] client: legacy: Suppress debug message spam
- Date: Thu, 9 Apr 2020 19:06:21 +0000 (UTC)
commit 11f0ad63587c3a9671fe7c4c6e49356da401f2de
Author: Christian Persch <chpe src gnome org>
Date: Thu Apr 9 21:04:32 2020 +0200
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
(cherry picked from commit f84316ec180e9b9515a0914e883a0585f6877c7e)
src/terminal-options.c | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
---
diff --git a/src/terminal-options.c b/src/terminal-options.c
index d5bb5f24..5cc20798 100644
--- a/src/terminal-options.c
+++ b/src/terminal-options.c
@@ -62,9 +62,33 @@ terminal_fprintf (FILE* fp,
}
}
+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,
@@ -72,9 +96,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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]