testing-language-server 0.1.12

LSP server for testing
Documentation
use crate::util::clean_old_logs;
use std::path::PathBuf;
use tracing_appender::non_blocking::WorkerGuard;

pub struct Log;

impl Log {
    fn log_dir() -> PathBuf {
        let home_dir = dirs::home_dir().unwrap();

        home_dir.join(".config/testing_language_server/logs")
    }

    pub fn init() -> Result<WorkerGuard, anyhow::Error> {
        let log_dir_path = Self::log_dir();
        let prefix = "server.log";
        let file_appender = tracing_appender::rolling::daily(&log_dir_path, prefix);
        let (non_blocking, guard) = tracing_appender::non_blocking(file_appender);
        clean_old_logs(
            log_dir_path.to_str().unwrap(),
            30,
            &format!("{prefix}.*"),
            &format!("{prefix}."),
        )
        .unwrap();
        tracing_subscriber::fmt().with_writer(non_blocking).init();
        Ok(guard)
    }
}