tag2upload_service_manager/
logging.rs

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
36
37
38
39
40
41
42
43
44
45
46

// This replaces Rocket's default subscriber.
//
// Ours is nicer, and also  prints messages from non-Rocket code.
// (I'm not sure what's wrong with the Rocket one
// but I'm not inclined to debug it.)

// FIXME be able to log to files and rotate them ourselves

use crate::prelude::*;

pub use tracing_subscriber::filter::LevelFilter;

pub fn default_level_filter() -> LevelFilter { LevelFilter::INFO }

pub fn setup(config: &Config) -> Result<(), StartupError> {
    use StartupError as SE;

    #[cfg(test)]
    match crate::test::t_logging_setup() {
        Ok(()) => {},
        Err(()) => return Ok(()),
    }

    let tracing = format!(
        "tag2upload_service_manager={},info,{}",
        config.log.level,
        config.log.tracing,
    );

    let filter = tracing_subscriber::filter::EnvFilter::builder()
        .parse(&tracing)
        .with_context(|| format!(
 "failed to parse tracing EnvFilter specification {tracing:?}"
        ))
        .map_err(SE::Logging)?;

    tracing_subscriber::FmtSubscriber::builder()
        .with_env_filter(filter)
        .try_init()
        .map_err(|e| SE::Logging(
            anyhow!("tracing subscriber already initialised? {e}")
        ))?;

    Ok(())
}