support_kit/logs/
log_target.rs1use 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}