GlibLoggerFormat::Structured breaks G_MESSAGES_DEBUG

Hello,

I’m trying to use GLib logging in Rust. As far as I understand, I should be able to use G_MESSAGES_DEBUG with a specific log domain to see all info and debug messages of my own application. As an example:

const G_LOG_DOMAIN: &str = "LOGTEST";

fn main() {
    static GLIB_LOGGER: glib::GlibLogger = glib::GlibLogger::new(
        glib::GlibLoggerFormat::Plain,
        glib::GlibLoggerDomain::CrateTarget,
    );
    log::set_logger(&GLIB_LOGGER).unwrap();
    log::set_max_level(log::LevelFilter::Debug);

    glib::debug!("DEBUG");
    glib::info!("INFO");
    glib::warn!("WARN");
}

Now I can pass G_MESSAGES_DEBUG=LOGTEST to make the debug and info messages appear:

$ cargo run --quiet --example log_test

(process:39532): LOGTEST-WARNING **: 10:50:33.030: WARN
$ G_MESSAGES_DEBUG=LOGTEST cargo run --quiet --example log_test
(process:39593): LOGTEST-DEBUG: 10:50:35.558: DEBUG
LOGTEST-INFO: 10:50:35.558: INFO

(process:39593): LOGTEST-WARNING **: 10:50:35.558: WARN

However, if I change glib::GlibLoggerFormat::Plain to glib::GlibLoggerFormat::Structured:

diff --git a/examples/log_test.rs b/examples/log_test.rs
index f66aacf..db12e79 100644
--- a/examples/log_test.rs
+++ b/examples/log_test.rs
@@ -2,7 +2,7 @@ const G_LOG_DOMAIN: &str = "LOGTEST";
 
 fn main() {
     static GLIB_LOGGER: glib::GlibLogger = glib::GlibLogger::new(
-        glib::GlibLoggerFormat::Plain,
+        glib::GlibLoggerFormat::Structured,
         glib::GlibLoggerDomain::CrateTarget,
     );
     log::set_logger(&GLIB_LOGGER).unwrap();

Then I can no longer make debug and info messages appear:

$ cargo run --quiet --example log_test

(process:40237): LOGTEST-WARNING **: 10:53:18.039: WARN
$ G_MESSAGES_DEBUG=LOGTEST cargo run --quiet --example log_test

(process:40317): LOGTEST-WARNING **: 10:53:22.814: WARN

Is this expected behaviour?

Cheers,
Basti

This appears to be a bug in either GLib or gtk-rs, see #1538

For future reference: glib: Don't require GLIB_DOMAIN to be a NUL-terminated string (!4350) · Merge requests · GNOME / GLib · GitLab

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.