1use tracing_subscriber::{layer::SubscriberExt, EnvFilter, Registry};
2
3const DEFAULT_FILTER: &str = "debug";
4
5pub struct TestTracing {
9 filter: Option<String>,
10}
11
12impl TestTracing {
13 pub fn new() -> Self {
14 Self { filter: None }
15 }
16
17 pub fn filter(mut self, filter: impl Into<String>) -> Self {
18 self.filter = Some(filter.into());
19 self
20 }
21
22 pub fn init(self) -> Result<(), Box<dyn std::error::Error>> {
23 let filter = self.filter.unwrap_or(DEFAULT_FILTER.into());
24
25 let filter_layer = EnvFilter::try_new(filter)?;
26
27 let subscriber = Registry::default()
28 .with(tracing_subscriber::fmt::layer())
29 .with(filter_layer);
30
31 tracing::subscriber::set_global_default(subscriber)?;
32
33 Ok(())
34 }
35}
36
37impl Default for TestTracing {
38 fn default() -> Self {
39 Self::new()
40 }
41}