diff --git a/src/formatting.rs b/src/formatting.rs index 94ab400..f8821b7 100644 --- a/src/formatting.rs +++ b/src/formatting.rs @@ -24,18 +24,17 @@ impl DatadogLog { log.insert("timestamp".to_string(), self.timestamp.to_rfc3339().into()); log.insert("level".to_string(), self.level.to_string().into()); - let mut message = self.message; - self.fields.sort(); - for field in self.fields { + let mut message = self.message; + + for field in &self.fields { // message is just a regular field if field.name != "message" { - message.push_str(&format!( - " {}={}", - field.name, - field.value.trim_matches('\"') - )); + let value = field.value.trim_matches('\"'); + + message.push_str(&format!(" {}={}", field.name, value)); + log.insert(format!("fields.{}", &field.name), value.into()); } } @@ -144,7 +143,7 @@ mod format { datadog_ids: None, }; - assert_that(sut.format()).is(json!({"timestamp": "2022-01-01T00:00:00+00:00", "level": "INFO", "message": "Hello World! foo=bar", "target": "target"}).to_string()); + assert_that(sut.format()).is(json!({"timestamp": "2022-01-01T00:00:00+00:00", "level": "INFO", "fields.foo": "bar", "message": "Hello World! foo=bar", "target": "target"}).to_string()); } #[test] @@ -173,7 +172,7 @@ mod format { datadog_ids: None, }; - assert_that(sut.format()).is(json!({"timestamp": "2022-01-01T00:00:00+00:00", "level": "INFO", "message": "Hello World! a=c b=b c=a", "target": "target"}).to_string()); + assert_that(sut.format()).is(json!({"timestamp": "2022-01-01T00:00:00+00:00", "level": "INFO", "fields.a": "c", "fields.b": "b", "fields.c": "a", "message": "Hello World! a=c b=b c=a", "target": "target"}).to_string()); } #[macro_export] diff --git a/src/layer.rs b/src/layer.rs index 313592b..c4dfe30 100644 --- a/src/layer.rs +++ b/src/layer.rs @@ -110,7 +110,7 @@ mod simple_layer { let events = sink.events(); assert_that(&events).size().is(1); - assert_that(events).first().contains("\",\"level\":\"INFO\",\"message\":\"Hello World! user=John Doe\",\"target\":\"datadog_formatting_layer::layer::simple_layer\"}"); + assert_that(events).first().contains("\",\"level\":\"INFO\",\"fields.user\":\"John Doe\",\"message\":\"Hello World! user=John Doe\",\"target\":\"datadog_formatting_layer::layer::simple_layer\"}"); } #[allow(clippy::redundant_clone)] @@ -123,9 +123,9 @@ mod simple_layer { let events = sink.events(); assert_that(&events).size().is(3); - assert_that(events.clone()).first().contains("\",\"level\":\"DEBUG\",\"message\":\"First Span! first_value=Argument\",\"target\":\"datadog_formatting_layer::layer::setup\"}"); - assert_that(events.clone()).second().contains("\",\"level\":\"DEBUG\",\"message\":\"Second Span! attr=value first_value=Argument\",\"target\":\"datadog_formatting_layer::layer::setup\"}"); - assert_that(events.clone()).third().contains("\",\"level\":\"INFO\",\"message\":\" attr=value first_value=Argument return=Return Value\",\"target\":\"datadog_formatting_layer::layer::setup\"}"); + assert_that(events.clone()).first().contains("\",\"level\":\"DEBUG\",\"fields.first_value\":\"Argument\",\"message\":\"First Span! first_value=Argument\",\"target\":\"datadog_formatting_layer::layer::setup\"}"); + assert_that(events.clone()).second().contains("\",\"level\":\"DEBUG\",\"fields.attr\":\"value\",\"fields.first_value\":\"Argument\",\"message\":\"Second Span! attr=value first_value=Argument\",\"target\":\"datadog_formatting_layer::layer::setup\"}"); + assert_that(events.clone()).third().contains("\",\"level\":\"INFO\",\"fields.attr\":\"value\",\"fields.first_value\":\"Argument\",\"fields.return\":\"Return Value\",\"message\":\" attr=value first_value=Argument return=Return Value\",\"target\":\"datadog_formatting_layer::layer::setup\"}"); } }