Skip to content

Commit 3ddb3e9

Browse files
committed
take ENABLE_DEBUG_LIBRARIES into account when changing log levels at runtime
1 parent 5c3f6d6 commit 3ddb3e9

File tree

1 file changed

+43
-6
lines changed

1 file changed

+43
-6
lines changed

src/commands.rs

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
1717
*/
1818
use tracing::{info, trace};
1919
use tracing_subscriber::EnvFilter;
20+
use anyhow::Context as _;
2021

2122
use crate::{Context, Data, Error};
2223

@@ -33,20 +34,56 @@ async fn set_log_level(ctx: Context<'_>, level: String) -> Result<(), Error> {
3334
let data = ctx.data();
3435
let reload_handle = data.log_reload_handle.write().await;
3536

37+
let enable_debug_libraries_string = std::env::var("ENABLE_DEBUG_LIBRARIES")
38+
.context("ENABLE_DEBUG_LIBRARIES was not found in the ENV")?;
39+
let enable_debug_libraries: bool = enable_debug_libraries_string
40+
.parse()
41+
.context("Failed to parse ENABLE_DEBUG_LIBRARIES")?;
42+
let crate_name = env!("CARGO_CRATE_NAME");
3643
let new_filter = match level.to_lowercase().as_str() {
37-
"trace" => "trace",
38-
"debug" => "debug",
39-
"info" => "info",
40-
"warn" => "warn",
41-
"error" => "error",
44+
"trace" => {
45+
if enable_debug_libraries {
46+
"trace".to_string()
47+
} else {
48+
format!("{crate_name}=trace")
49+
}
50+
}
51+
"debug" => {
52+
if enable_debug_libraries {
53+
"debug".to_string()
54+
} else {
55+
format!("{crate_name}=debug")
56+
}
57+
}
58+
"info" => {
59+
if enable_debug_libraries {
60+
"info".to_string()
61+
} else {
62+
format!("{crate_name}=info")
63+
}
64+
}
65+
"warn" => {
66+
if enable_debug_libraries {
67+
"warn".to_string()
68+
} else {
69+
format!("{crate_name}=warn")
70+
}
71+
}
72+
"error" => {
73+
if enable_debug_libraries {
74+
"error".to_string()
75+
} else {
76+
format!("{crate_name}=error")
77+
}
78+
}
4279
_ => {
4380
ctx.say("Invalid log level! Use: trace, debug, info, warn, error")
4481
.await?;
4582
return Ok(());
4683
}
4784
};
4885

49-
if reload_handle.reload(EnvFilter::new(new_filter)).is_ok() {
86+
if reload_handle.reload(EnvFilter::new(&new_filter)).is_ok() {
5087
ctx.say(format!("Log level changed to **{}**", new_filter))
5188
.await?;
5289
info!("Log level changed to {}", new_filter);

0 commit comments

Comments
 (0)