47 lines
1.3 KiB
Rust
47 lines
1.3 KiB
Rust
use prometeu_abi::log::{LogEvent, LogLevel, LogSource};
|
|
|
|
pub struct HostConsoleSink {
|
|
last_seq: Option<u64>,
|
|
}
|
|
|
|
impl HostConsoleSink {
|
|
pub fn new() -> Self {
|
|
Self { last_seq: None }
|
|
}
|
|
|
|
pub fn process_events(&mut self, events: Vec<LogEvent>) {
|
|
for event in events {
|
|
let level_str = match event.level {
|
|
LogLevel::Trace => "TRACE",
|
|
LogLevel::Debug => "DEBUG",
|
|
LogLevel::Info => "INFO",
|
|
LogLevel::Warn => "WARN",
|
|
LogLevel::Error => "ERROR",
|
|
};
|
|
|
|
let source_buf;
|
|
let source_str = match event.source {
|
|
LogSource::Pos => "POS",
|
|
LogSource::Hub => "HUB",
|
|
LogSource::Vm => "VM",
|
|
LogSource::Fs => "FS",
|
|
LogSource::App { app_id } => {
|
|
source_buf = format!("APP:{}", app_id);
|
|
&source_buf
|
|
}
|
|
};
|
|
|
|
println!(
|
|
"[{:06}ms][{}][{}][{}] {}",
|
|
event.ts_ms, event.frame, level_str, source_str, event.msg
|
|
);
|
|
|
|
self.last_seq = Some(event.seq);
|
|
}
|
|
}
|
|
|
|
pub fn last_seq(&self) -> Option<u64> {
|
|
self.last_seq
|
|
}
|
|
}
|