defect_obs/
tracing_init.rs1use tracing_subscriber::EnvFilter;
7
8const DEFAULT_FILTER: &str = "info,toac=warn";
9
10pub fn init_tracing(filter: Option<&str>, jsonl: bool) -> anyhow::Result<()> {
17 let default_filter = filter.unwrap_or(DEFAULT_FILTER);
18 let env_filter =
19 EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(default_filter));
20 let builder = tracing_subscriber::fmt()
21 .with_env_filter(env_filter)
22 .with_writer(std::io::stderr)
23 .with_target(true);
24 if jsonl {
25 builder
26 .json()
27 .try_init()
28 .map_err(|e| anyhow::anyhow!("tracing init failed: {e}"))
29 } else {
30 builder
31 .with_ansi(std::io::IsTerminal::is_terminal(&std::io::stderr()))
32 .try_init()
33 .map_err(|e| anyhow::anyhow!("tracing init failed: {e}"))
34 }
35}