1use anyhow::{Context, Result};
9use tracing_subscriber::{EnvFilter, fmt, prelude::*};
10
11use crate::config::{LogConfig, LogFormat};
12
13pub fn init(config: &LogConfig) -> Result<()> {
21 let filter =
22 EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(&config.filter));
23
24 let registry = tracing_subscriber::registry().with(filter);
25
26 let result = match config.format {
27 LogFormat::Text => registry.with(fmt::layer().with_target(true)).try_init(),
28 LogFormat::Json => registry.with(fmt::layer().json()).try_init(),
29 LogFormat::Pretty => registry.with(fmt::layer().pretty()).try_init(),
30 };
31
32 result.context("tracing subscriber already initialized")
33}