elif_http/logging/
context.rs

1//! Logging context utilities
2
3use std::collections::HashMap;
4use uuid::Uuid;
5
6/// Logging context for request tracing
7#[derive(Debug, Clone)]
8pub struct LoggingContext {
9    pub request_id: String,
10    pub user_id: Option<String>,
11    pub session_id: Option<String>,
12    pub additional_fields: HashMap<String, String>,
13}
14
15impl LoggingContext {
16    pub fn new() -> Self {
17        Self {
18            request_id: Uuid::new_v4().to_string(),
19            user_id: None,
20            session_id: None,
21            additional_fields: HashMap::new(),
22        }
23    }
24
25    pub fn with_user_id(mut self, user_id: String) -> Self {
26        self.user_id = Some(user_id);
27        self
28    }
29
30    pub fn with_session_id(mut self, session_id: String) -> Self {
31        self.session_id = Some(session_id);
32        self
33    }
34
35    pub fn add_field(&mut self, key: String, value: String) {
36        self.additional_fields.insert(key, value);
37    }
38}
39
40impl Default for LoggingContext {
41    fn default() -> Self {
42        Self::new()
43    }
44}