timr-tui/src/logging.rs
Jens Krause 3d9b235f12
Rust 1.85.0 + Rust 2024 Edition (#68)
- Add `rust-toolchain.toml`
- Refactor `flake` to consider `rust-toolchain.toml`, especially Rust version
- `just`: Add run-sound command
- Ignore sound files
- Format
2025-02-25 20:30:20 +01:00

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(())
}
}