turn-server 4.0.1

A pure rust-implemented turn server.
Documentation
use std::fs::{create_dir_all, metadata};

use anyhow::Result;
use fern::{DateBased, Dispatch};
use turn_server::config::Config;

pub fn init(config: &Config) -> Result<()> {
    let mut logger =
        Dispatch::new()
            .level(config.log.level.into())
            .format(move |out, message, record| {
                out.finish(format_args!(
                    "[{}] - ({}) - {}",
                    record.level(),
                    record.file_static().unwrap_or("*"),
                    message
                ))
            });

    if config.log.stdout {
        logger = logger.chain(std::io::stdout());
    }

    if let Some(path) = &config.log.file_directory {
        if metadata(path).is_err() {
            create_dir_all(path)?;
        }

        logger = logger.chain(DateBased::new(path, "turn-server-%Y-%m-%d.log"))
    }

    logger.apply()?;

    Ok(())
}