feat: add logging for debugging

This commit is contained in:
PandaDEV 2024-12-16 23:53:29 +10:00
parent 00749a9d3a
commit 14a13f44bb
No known key found for this signature in database
GPG key ID: 13EFF9BAF70EE75C
5 changed files with 54 additions and 0 deletions

1
src-tauri/Cargo.lock generated
View file

@ -4187,6 +4187,7 @@ dependencies = [
"image",
"include_dir",
"lazy_static",
"log",
"rand 0.8.5",
"rdev",
"regex",

View file

@ -40,6 +40,7 @@ lazy_static = "1.5.0"
time = "0.3.37"
global-hotkey = "0.6.3"
chrono = { version = "0.4.39", features = ["serde"] }
log = { version = "0.4.22", features = ["std"] }
uuid = "1.11.0"
active-win-pos-rs = "0.8.3"
include_dir = "0.7.4"

View file

@ -34,6 +34,8 @@ fn main() {
)
.setup(|app| {
let app_data_dir = app.path().app_data_dir().unwrap();
utils::logger::init_logger(&app_data_dir).expect("Failed to initialize logger");
fs::create_dir_all(&app_data_dir).expect("Failed to create app data directory");
let db_path = app_data_dir.join("data.db");

View file

@ -0,0 +1,49 @@
use chrono;
use log::{LevelFilter, SetLoggerError};
use std::fs::{File, OpenOptions};
use std::io::Write;
pub struct FileLogger {
file: File,
}
impl log::Log for FileLogger {
fn enabled(&self, _metadata: &log::Metadata) -> bool {
true
}
fn log(&self, record: &log::Record) {
if self.enabled(record.metadata()) {
let mut file = self.file.try_clone().expect("Failed to clone file handle");
writeln!(
file,
"{} - {}: {}",
chrono::Local::now().format("%Y-%m-%d %H:%M:%S"),
record.level(),
record.args()
)
.expect("Failed to write to log file");
}
}
fn flush(&self) {
self.file.sync_all().expect("Failed to flush log file");
}
}
pub fn init_logger(app_data_dir: &std::path::Path) -> Result<(), SetLoggerError> {
let logs_dir = app_data_dir.join("logs");
std::fs::create_dir_all(&logs_dir).expect("Failed to create logs directory");
let log_path = logs_dir.join("app.log");
let file = OpenOptions::new()
.create(true)
.append(true)
.open(log_path)
.expect("Failed to open log file");
let logger = Box::new(FileLogger { file });
unsafe { log::set_logger_racy(Box::leak(logger))? };
log::set_max_level(LevelFilter::Debug);
Ok(())
}

View file

@ -1,3 +1,4 @@
pub mod commands;
pub mod favicon;
pub mod types;
pub mod logger;