binary_options_tools_core/utils/
tracing.rs1use std::fs::OpenOptions;
2
3use tracing::level_filters::LevelFilter;
4use tracing_subscriber::{fmt, layer::SubscriberExt, util::SubscriberInitExt, Layer};
5
6pub fn start_tracing(terminal: bool) -> anyhow::Result<()> {
7 let error_logs = OpenOptions::new()
8 .append(true)
9 .create(true)
10 .open("errors.log")?;
11
12 let sub = tracing_subscriber::registry()
13 .with(
15 fmt::layer()
17 .with_ansi(false)
18 .with_writer(error_logs)
19 .with_filter(LevelFilter::WARN),
20 );
21 if terminal {
22 sub.with(fmt::Layer::default().with_filter(LevelFilter::DEBUG))
23 .try_init()?;
24 } else {
25 sub.try_init()?;
26 }
27
28 Ok(())
29}
30
31pub fn start_tracing_leveled(terminal: bool, level: LevelFilter) -> anyhow::Result<()> {
32 let error_logs = OpenOptions::new()
33 .append(true)
34 .create(true)
35 .open("errors.log")?;
36
37 let sub = tracing_subscriber::registry()
38 .with(
40 fmt::layer()
42 .with_ansi(false)
43 .with_writer(error_logs)
44 .with_filter(LevelFilter::WARN),
45 );
46 if terminal {
47 sub.with(fmt::Layer::default().with_filter(level))
48 .try_init()?;
49 } else {
50 sub.try_init()?;
51 }
52
53 Ok(())
54}
55