tuwunel_core/log/
suppress.rs1use 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}