use anyhow::{Context, Result};
use tracing_subscriber::{EnvFilter, fmt, prelude::*};
use crate::config::{LogConfig, LogFormat};
pub fn init(config: &LogConfig) -> Result<()> {
let filter =
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(&config.filter));
let registry = tracing_subscriber::registry().with(filter);
let result = match config.format {
LogFormat::Text => registry.with(fmt::layer().with_target(true)).try_init(),
LogFormat::Json => registry.with(fmt::layer().json()).try_init(),
LogFormat::Pretty => registry.with(fmt::layer().pretty()).try_init(),
};
result.context("tracing subscriber already initialized")
}