1pub const KLOG: &str = "/mnt/onboard/.adds/kothok.log";
2
3pub struct FileLogger;
4impl log::Log for FileLogger {
5 fn log(&self, record: &log::Record) {
6 use std::io::Write;
7 let args = record.args().to_string();
8 if args.contains("estimating duration") || args.contains("edge-tts WS connected") {
9 return;
10 }
11 let ts = std::time::SystemTime::now()
12 .duration_since(std::time::UNIX_EPOCH)
13 .map(|d| {
14 let s = d.as_secs();
15 format!(
16 "{:02}:{:02}:{:02}.{:03}",
17 (s / 3600) % 24,
18 (s / 60) % 60,
19 s % 60,
20 d.subsec_millis()
21 )
22 })
23 .unwrap_or_else(|_| "??:??:??.???".into());
24 if let Ok(mut f) = std::fs::OpenOptions::new()
25 .create(true)
26 .append(true)
27 .open(KLOG)
28 {
29 let _ = writeln!(f, "{} {:<5} {}", ts, record.level(), args);
31 if record.level() <= log::Level::Info {
32 let _ = f.sync_data();
34 }
35 }
36 }
37 fn enabled(&self, _: &log::Metadata) -> bool {
38 true
39 }
40 fn flush(&self) {}
41}