From 5b3ab7e1d3c0d36e5ab6321e69bd8787a3ea8bfa Mon Sep 17 00:00:00 2001 From: Samuel Tam Date: Tue, 16 Dec 2025 01:06:58 +0800 Subject: [PATCH] Fix RUST_LOG implementation by using default directive The issue was using EnvFilter::builder().from_env() which returns Ok even when RUST_LOG is unset, preventing the unwrap_or_else fallback from executing. This meant whatever fallbacks we had were ignored. Using default directive solves this and yields nicer code. --- lightway-client/src/main.rs | 10 ++++------ lightway-server/src/main.rs | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/lightway-client/src/main.rs b/lightway-client/src/main.rs index 8c9b6772..dd2777e1 100644 --- a/lightway-client/src/main.rs +++ b/lightway-client/src/main.rs @@ -78,16 +78,14 @@ async fn main() -> Result<()> { Layer::Clap(matches), ])?; + let level: tracing::level_filters::LevelFilter = config.log_level.into(); let filter = tracing_subscriber::EnvFilter::builder() + .with_default_directive(level.into()) // https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.Builder.html#method.with_regex // recommends to disable REGEX when using envfilter from untrusted sources .with_regex(false) - .from_env() - .unwrap_or_else(|_| { - // If RUST_LOG is not set, use config.log_level as default - let level: tracing::level_filters::LevelFilter = config.log_level.into(); - tracing_subscriber::EnvFilter::new(level.to_string()) - }); + .with_env_var("LW_CLIENT_RUST_LOG") + .from_env_lossy(); let fmt = tracing_subscriber::fmt().with_env_filter(filter); LogFormat::Full.init_with_env_filter(fmt); diff --git a/lightway-server/src/main.rs b/lightway-server/src/main.rs index 2bbbd80d..53163929 100644 --- a/lightway-server/src/main.rs +++ b/lightway-server/src/main.rs @@ -107,16 +107,14 @@ async fn main() -> Result<()> { set_logging_callback(Some(wolfssl_tracing_callback)); } + let level: tracing::level_filters::LevelFilter = config.log_level.into(); let filter = tracing_subscriber::EnvFilter::builder() + .with_default_directive(level.into()) // https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.Builder.html#method.with_regex // recommends to disable REGEX when using envfilter from untrusted sources .with_regex(false) - .from_env() - .unwrap_or_else(|_| { - // If RUST_LOG is not set, use config.log_level as default - let level: tracing::level_filters::LevelFilter = config.log_level.into(); - tracing_subscriber::EnvFilter::new(level.to_string()) - }); + .with_env_var("LW_SERVER_RUST_LOG") + .from_env_lossy(); let fmt = tracing_subscriber::fmt().with_env_filter(filter); config.log_format.init_with_env_filter(fmt);