1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
pub use tracing::{debug, error, info, instrument, trace, warn, Level};
use std::io;
use tracing::subscriber::SetGlobalDefaultError;
use tracing_subscriber::{EnvFilter, FmtSubscriber};
pub fn init<T: AsRef<str>>(default_level: Option<&T>) -> Result<(), SetGlobalDefaultError> {
let filter = EnvFilter::try_from_default_env().unwrap_or(EnvFilter::new(
default_level.map(|s| s.as_ref()).unwrap_or("warn"),
));
let subscriber = FmtSubscriber::builder()
.with_writer(io::stderr)
.with_env_filter(filter)
.finish();
Ok(tracing::subscriber::set_global_default(subscriber)?)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
init(Some(&"warn")).unwrap();
debug!("you should not see this");
warn!("this is a warning");
error!("this is an error");
}
}