elif_http/logging/
context.rs1use std::collections::HashMap;
4use uuid::Uuid;
5
6#[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}