support_kit/logs/
log_target.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{Configuration, TracingTarget};
4
5use super::LoggerConfig;
6
7#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
8pub enum LogTarget {
9    Stdout,
10    Stderr,
11}
12
13impl LogTarget {
14    pub fn init_console_logger(
15        &self,
16        config: &Configuration,
17        logger_config: &LoggerConfig,
18    ) -> TracingTarget {
19        use tracing_subscriber::fmt::writer::MakeWriterExt;
20        use tracing_subscriber::Layer;
21
22        match self {
23            LogTarget::Stderr => tracing_subscriber::fmt::layer()
24                .with_writer(
25                    std::io::stderr
26                        .with_max_level(logger_config.max_tracing_level())
27                        .with_min_level(logger_config.min_tracing_level()),
28                )
29                .with_filter(config.env_filter())
30                .boxed(),
31            LogTarget::Stdout => tracing_subscriber::fmt::layer()
32                .with_writer(
33                    std::io::stdout
34                        .with_max_level(logger_config.max_tracing_level())
35                        .with_min_level(logger_config.min_tracing_level()),
36                )
37                .with_filter(config.env_filter())
38                .boxed(),
39        }
40    }
41}