2026-03-24 13:40:24 +00:00

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
}
}