siderite_config/
tracing_init.rs1use crate::error::ConfigError;
4use crate::settings::LogSettings;
5use tracing_subscriber::EnvFilter;
6
7pub fn init_tracing(log: &LogSettings) -> Result<(), ConfigError> {
17 let filter = env_filter(log)?;
18 if log.json {
19 tracing_subscriber::fmt()
20 .json()
21 .with_env_filter(filter)
22 .try_init()
23 .map_err(|err| ConfigError::Tracing(err.to_string()))
24 } else {
25 tracing_subscriber::fmt()
26 .with_env_filter(filter)
27 .try_init()
28 .map_err(|err| ConfigError::Tracing(err.to_string()))
29 }
30}
31
32pub(crate) fn env_filter(log: &LogSettings) -> Result<EnvFilter, ConfigError> {
33 if std::env::var_os("RUST_LOG").is_some() {
34 EnvFilter::try_from_default_env().map_err(|err| ConfigError::InvalidFilter(err.to_string()))
35 } else {
36 EnvFilter::try_new(log.level.as_str())
37 .map_err(|err| ConfigError::InvalidFilter(err.to_string()))
38 }
39}