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