diff --git a/Cargo.toml b/Cargo.toml index 442a5090..94c32c48 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,7 +52,7 @@ serde_json = { version = "1.0", features = ["arbitrary_precision"] } serde_urlencoded = "0.6.1" scheduled-thread-pool = "0.2" sha2 = "0.8.0" -slog = { version = "2.5", features = ["max_level_trace", "release_max_level_error"] } +slog = { version = "2.5", features = ["max_level_trace", "release_max_level_error", "dynamic-keys"] } slog-async = "2.3" slog-envlogger = "2.2.0" slog-mozlog-json = "0.1" diff --git a/src/web/tags.rs b/src/web/tags.rs index 5afb43f1..f3840100 100644 --- a/src/web/tags.rs +++ b/src/web/tags.rs @@ -12,6 +12,7 @@ use serde::{ Serialize, }; use serde_json::value::Value; +use slog::{Key, Record, KV}; use crate::server::user_agent::parse_user_agent; @@ -141,3 +142,12 @@ impl Into> for Tags { result } } + +impl KV for Tags { + fn serialize(&self, _rec: &Record<'_>, serializer: &mut dyn slog::Serializer) -> slog::Result { + for (key, val) in &self.tags { + serializer.emit_str(Key::from(key.clone()), &val)?; + } + Ok(()) + } +}