Skip to main content

tuwunel_core/log/
suppress.rs

1use std::sync::Arc;
2
3use super::EnvFilter;
4use crate::Server;
5
6pub struct Suppress {
7	server: Arc<Server>,
8	restore: EnvFilter,
9}
10
11impl Suppress {
12	pub fn new(server: &Arc<Server>) -> Self {
13		let handle = "console";
14		let config = &server.config.log;
15		let suppress = EnvFilter::default();
16		let restore = server
17			.log
18			.reload
19			.current(handle)
20			.unwrap_or_else(|| EnvFilter::try_new(config).unwrap_or_default());
21
22		server
23			.log
24			.reload
25			.reload(&suppress, Some(&[handle]))
26			.expect("log filter reloaded");
27
28		Self { server: server.clone(), restore }
29	}
30}
31
32impl Drop for Suppress {
33	fn drop(&mut self) {
34		self.server
35			.log
36			.reload
37			.reload(&self.restore, Some(&["console"]))
38			.expect("log filter reloaded");
39	}
40}