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