plantuml_server_client_rs/
logger.rs1use anyhow::{Context as _, Result};
2use tracing_subscriber::EnvFilter;
3
4const ENV_NAME: &str = "PSCR_LOG";
5
6pub fn init_logger(level: u8) -> Result<()> {
16 let env_filter = env_filter(level);
17
18 let subscriber = tracing_subscriber::fmt()
19 .compact()
20 .with_writer(std::io::stderr)
21 .with_file(true)
22 .with_line_number(true)
23 .with_thread_ids(true)
24 .with_target(true)
25 .with_env_filter(env_filter)
26 .finish();
27
28 tracing::subscriber::set_global_default(subscriber)
29 .context("tracing::subscriber::set_global_default(): failed")?;
30 Ok(())
31}
32
33fn env_filter(level: u8) -> EnvFilter {
34 let log_level = std::env::var(ENV_NAME).unwrap_or_else(|_| {
35 match level {
36 0 => "warn",
37 1 => "info",
38 2 => "debug",
39 _ => "trace",
40 }
41 .to_string()
42 });
43 EnvFilter::new(log_level)
44}