- Add `rust-toolchain.toml` - Refactor `flake` to consider `rust-toolchain.toml`, especially Rust version - `just`: Add run-sound command - Ignore sound files - Format
42 lines
1.1 KiB
Rust
42 lines
1.1 KiB
Rust
use color_eyre::eyre::{Result, eyre};
|
|
use std::fs;
|
|
use std::path::PathBuf;
|
|
use tracing::level_filters::LevelFilter;
|
|
use tracing_subscriber::{
|
|
self, prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt,
|
|
};
|
|
|
|
pub struct Logger {
|
|
log_dir: PathBuf,
|
|
}
|
|
|
|
impl Logger {
|
|
pub fn new(log_dir: PathBuf) -> Self {
|
|
Self { log_dir }
|
|
}
|
|
|
|
pub fn init(&self) -> Result<()> {
|
|
let log_path = self.log_dir.join("app.log");
|
|
let log_file = fs::File::create(log_path).map_err(|err| {
|
|
eyre!(
|
|
"Could not create a log file in {:?} : {}",
|
|
self.log_dir,
|
|
err
|
|
)
|
|
})?;
|
|
let fmt_layer = tracing_subscriber::fmt::layer()
|
|
.with_file(true)
|
|
.with_line_number(true)
|
|
.with_writer(log_file)
|
|
.with_target(false)
|
|
.with_ansi(false);
|
|
let filter = tracing_subscriber::filter::EnvFilter::from_default_env()
|
|
.add_directive(LevelFilter::DEBUG.into());
|
|
tracing_subscriber::registry()
|
|
.with(fmt_layer)
|
|
.with(filter)
|
|
.init();
|
|
Ok(())
|
|
}
|
|
}
|