tuwunel_admin/debug/
change_log_level.rs1use tracing_subscriber::EnvFilter;
2use tuwunel_core::{Result, err};
3
4use crate::admin_command;
5
6#[admin_command]
7pub(super) async fn change_log_level(&self, filter: Option<String>, reset: bool) -> Result {
8 let handles = &["console"];
9
10 let filter = reset
11 .then_some(&self.services.config.log)
12 .or(filter.as_ref())
13 .ok_or_else(|| err!("No log level was specified."))?;
14
15 let filter_layer = EnvFilter::try_new(filter).map_err(|e| {
16 let source = if !reset { "specified" } else { "found in config" };
17 err!("Invalid log level filter {source}: {e}")
18 })?;
19
20 self.services
21 .server
22 .log
23 .reload
24 .reload(&filter_layer, Some(handles))
25 .map_err(|e| err!("Failed to modify and reload the global tracing log level: {e}"))?;
26
27 write!(self, "Successfully changed log level to {filter}").await
28}