rework (error) logging

This commit is contained in:
2025-05-16 10:03:48 +01:00
parent 9dbfbc4419
commit 10e69eaac3
6 changed files with 78 additions and 18 deletions
Generated
+52
View File
@@ -63,6 +63,21 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
[[package]]
name = "android-tzdata"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]]
name = "android_system_properties"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
dependencies = [
"libc",
]
[[package]]
name = "arboard"
version = "3.5.0"
@@ -245,6 +260,18 @@ dependencies = [
"libc",
]
[[package]]
name = "chrono"
version = "0.4.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
dependencies = [
"android-tzdata",
"iana-time-zone",
"num-traits",
"windows-link",
]
[[package]]
name = "clipboard-win"
version = "5.4.0"
@@ -758,6 +785,7 @@ name = "gta-tools"
version = "0.6.0"
dependencies = [
"catppuccin-egui",
"chrono",
"eframe",
"egui_extras",
"image",
@@ -802,6 +830,30 @@ dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "iana-time-zone"
version = "0.1.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"log",
"wasm-bindgen",
"windows-core",
]
[[package]]
name = "iana-time-zone-haiku"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
dependencies = [
"cc",
]
[[package]]
name = "icu_collections"
version = "1.5.0"
+1
View File
@@ -7,6 +7,7 @@ edition = "2024"
catppuccin-egui = { version = "5.5.0", default-features = false, features = [
"egui31",
] }
chrono = { version = "0.4.41", default-features = false, features = ["clock"] }
eframe = { version = "0.31.1", default-features = false, features = [
"glow",
"default_fonts",
+3 -17
View File
@@ -3,28 +3,14 @@ use crate::{
app::{App, WINDOW_SIZE},
tools,
},
util::{consts::path, persistent_state::PersistentState, win},
util::{log, persistent_state::PersistentState, win},
};
use eframe::egui;
use std::{
fs::File,
io::Write,
time::{SystemTime, UNIX_EPOCH},
};
fn panic_hook(panic_info: &std::panic::PanicHookInfo<'_>) {
let mut file = File::options()
.create(true)
.append(true)
.open(path::APP_ERROR.as_path())
.unwrap();
let timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs();
let backtrace = std::backtrace::Backtrace::capture();
let message = format!("[{timestamp}]\n{panic_info}\nstack backtrace:\n{backtrace}\n");
file.write_all(message.as_bytes()).unwrap();
let message = format!("{panic_info}\nstack backtrace:\n{backtrace}\n");
log::log(log::LogLevel::Panic, message);
}
fn app_creator(
+1
View File
@@ -1,6 +1,7 @@
mod codeberg;
pub mod consts;
pub mod countdown;
pub mod log;
pub mod meta;
pub mod persistent_state;
pub mod win;
+1 -1
View File
@@ -5,7 +5,7 @@ pub mod path {
.join("GTA Tools")
});
pub static APP_CONFIG: LazyLock<PathBuf> = LazyLock::new(|| APP_STORAGE.join("config.json"));
pub static APP_ERROR: LazyLock<PathBuf> = LazyLock::new(|| APP_STORAGE.join("error.log"));
pub static APP_LOG: LazyLock<PathBuf> = LazyLock::new(|| APP_STORAGE.join("gta-tools.log"));
}
pub mod game {
+20
View File
@@ -0,0 +1,20 @@
use crate::util::consts::path;
use std::{fs::File, io::Write};
use strum::Display;
#[derive(Display)]
pub enum LogLevel {
Error,
Panic,
}
pub fn log(level: LogLevel, message: String) {
let mut file = File::options()
.create(true)
.append(true)
.open(path::APP_LOG.as_path())
.unwrap();
let timestamp = chrono::Local::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, false);
let message = format!("[{timestamp}] [{level}]\n{message}\n\n");
file.write_all(message.as_bytes()).unwrap();
}