penguin_app/config/
logger_config.rs

1use penguin_config::*;
2
3#[derive(Debug, Clone)]
4pub struct LoggerConfig {
5    pub output_path: String,
6    pub debug_message_severity: log::LevelFilter,
7}
8impl From<LoggerConfigDeserializable> for LoggerConfig {
9    fn from(x: LoggerConfigDeserializable) -> Self {
10        Self {
11            output_path: x.output_path,
12            debug_message_severity: x.debug_message_severity.into(),
13        }
14    }
15}
16
17
18#[derive(Debug, Deserialize)]
19pub struct LoggerConfigDeserializable {
20    pub output_path: String,
21    pub debug_message_severity: LogLevelFilter,
22}
23
24
25
26/// can't derive the necessary trait for the log::LevelFilter enum to serialize it since it's in
27/// another crate, so this is an ugly fix
28#[derive(Debug, Deserialize, Copy, Clone)]
29#[serde(rename_all = "lowercase")]
30pub enum LogLevelFilter {
31    Off,
32    Error,
33    Warn,
34    Info,
35    Debug,
36    Trace,
37}
38impl From<LogLevelFilter> for log::LevelFilter {
39    fn from(level: LogLevelFilter) -> Self {
40        match level {
41            LogLevelFilter::Off => Self::Off,
42            LogLevelFilter::Error => Self::Error,
43            LogLevelFilter::Warn => Self::Warn,
44            LogLevelFilter::Info => Self::Info,
45            LogLevelFilter::Debug => Self::Debug,
46            LogLevelFilter::Trace => Self::Trace,
47        }
48    }
49}