Skip to main content

tuwunel_admin/debug/
change_log_level.rs

1use 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}