statsig_rust/console_capture/
console_capture_handler.rs1use std::collections::HashMap;
2use std::sync::Arc;
3
4use crate::console_capture::console_log_line_levels::StatsigLogLineLevel;
5use crate::event_logging::event_logger::EventLogger;
6use crate::event_logging::event_queue::queued_passthrough::EnqueuePassthroughOp;
7use crate::event_logging::statsig_event_internal::StatsigEventInternal;
8use crate::observability::console_capture_observer::ConsoleCaptureEvent;
9
10pub struct ConsoleCaptureHandler {
11 event_logger: Arc<EventLogger>,
12}
13
14impl ConsoleCaptureHandler {
15 pub fn new(event_logger: Arc<EventLogger>) -> Self {
16 Self { event_logger }
17 }
18
19 pub fn handle_console_capture_event(&self, event: ConsoleCaptureEvent) {
20 let log_level = StatsigLogLineLevel::from_string(&event.level);
21 let Some(log_level) = log_level else {
22 return;
23 };
24
25 let metadata = event.stack_trace.map(|stack_trace| {
26 let mut map = HashMap::new();
27 map.insert("trace".to_string(), stack_trace);
28 map
29 });
30
31 self.event_logger.enqueue(EnqueuePassthroughOp {
32 event: StatsigEventInternal::new_statsig_log_line_event(
33 event.user,
34 log_level,
35 Some(event.payload.join(" ")),
36 metadata,
37 Some(event.timestamp),
38 ),
39 });
40 }
41}