27 lines
678 B
Rust
27 lines
678 B
Rust
use crate::logging::loggers::{ConsoleLogger, FileLogger};
|
|
use crate::key::keystate::KeyState;
|
|
|
|
pub trait Logger: Sync {
|
|
fn log(&self, key: &KeyState);
|
|
}
|
|
|
|
pub fn get_logger(name: &str) -> Box<dyn Logger> {
|
|
match name {
|
|
"file" => Box::new(FileLogger::new_default()),
|
|
_ => Box::new(ConsoleLogger),
|
|
}
|
|
}
|
|
|
|
impl dyn Logger {
|
|
pub fn default_format(key: &KeyState) -> String {
|
|
format!(
|
|
"{} >> {}{}{} >> {}",
|
|
key.kbdllstruct.vkCode,
|
|
if key.win_down { "w" } else { "" },
|
|
if key.ctrl_down { "c" } else { "" },
|
|
if key.shift_down { "s" } else { "" },
|
|
key.name()
|
|
)
|
|
}
|
|
}
|