forked from beerpsi/chuniio-yubideck
43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
use std::{ffi::CString, io::Write};
|
|
|
|
use winapi::um::debugapi::OutputDebugStringA;
|
|
|
|
#[derive(Debug)]
|
|
pub struct Logger {}
|
|
|
|
impl Write for Logger {
|
|
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
|
|
if let Ok(c_str) = CString::new(buf) {
|
|
unsafe { OutputDebugStringA(c_str.as_ptr()) }
|
|
}
|
|
|
|
std::io::stdout().write(buf)
|
|
}
|
|
|
|
fn flush(&mut self) -> std::io::Result<()> {
|
|
std::io::stdout().flush()
|
|
}
|
|
}
|
|
|
|
pub fn init_logger() {
|
|
env_logger::builder()
|
|
.filter_level(::log::LevelFilter::Error)
|
|
.filter_module(
|
|
"chuniio-tasoller",
|
|
if cfg!(debug_assertions) {
|
|
::log::LevelFilter::Debug
|
|
} else {
|
|
::log::LevelFilter::Info
|
|
},
|
|
)
|
|
.parse_default_env()
|
|
.target(env_logger::Target::Pipe(Box::new(Logger {})))
|
|
.format(|f, record| {
|
|
let target = record.target();
|
|
let level = record.level();
|
|
|
|
writeln!(f, "{} {} -> {}", level, target, record.args())
|
|
})
|
|
.init();
|
|
}
|