chuniio-yubideck/src/log.rs

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();
}