jenslog-rs/src/logging/loggers.rs
LordMZTE 8bba874cd6 move some stuff
key names will finally be correct
2020-08-26 14:24:52 +02:00

36 lines
900 B
Rust

use crate::logging::logger::Logger;
use std::fs::{File, OpenOptions};
use std::io::Write;
use std::path::Path;
use std::sync::Mutex;
use crate::key::keystate::KeyState;
pub struct ConsoleLogger;
impl Logger for ConsoleLogger {
fn log(&self, key: &KeyState) {
println!("{}", Logger::default_format(key))
}
}
pub struct FileLogger {
file: Mutex<File>,
}
impl FileLogger {
pub fn new(filename: &Path) -> Self {
FileLogger { file: Mutex::from(OpenOptions::new().create(true).write(true).append(true).open(&filename).unwrap()) }
}
pub fn new_default() -> Self {
let mut path = dirs::desktop_dir().unwrap();
path.push("log.txt");
Self::new(&path)
}
}
impl Logger for FileLogger {
fn log(&self, key: &KeyState) {
self.file.lock().unwrap().write_all(format!("{}\n", Logger::default_format(key)).as_ref()).unwrap();
}
}