vtcode_exec_events/
log_support.rs1use log::Level;
2
3use super::{EventEmitter, ThreadEvent, json};
4
5#[derive(Debug, Clone)]
7pub struct LogEmitter {
8 level: Level,
9}
10
11impl LogEmitter {
12 pub fn new(level: Level) -> Self {
14 Self { level }
15 }
16}
17
18impl Default for LogEmitter {
19 fn default() -> Self {
20 Self { level: Level::Info }
21 }
22}
23
24impl EventEmitter for LogEmitter {
25 fn emit(&mut self, event: &ThreadEvent) {
26 if log::log_enabled!(self.level) {
27 match json::to_string(event) {
28 Ok(serialized) => log::log!(self.level, "{serialized}"),
29 Err(err) => log::log!(self.level, "failed to serialize vtcode exec event for logging: {err}"),
30 }
31 }
32 }
33}
34
35pub use LogEmitter as PublicLogEmitter;