Skip to content

Commit b0f01ee

Browse files
axd1x8aestk
authored andcommitted
Fix json encoder not using serde for Serialize types
1 parent 0a8a92b commit b0f01ee

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ console_writer = ["ansi_writer", "libc", "winapi"]
4848
simple_writer = []
4949
threshold_filter = []
5050
background_rotation = []
51-
log_kv = ["log/kv"]
51+
log_kv = ["log/kv", "log/kv_serde"]
5252

5353
all_components = [
5454
"console_appender",

src/encode/json.rs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ mod kv {
187187
value: log::kv::Value<'kvs>,
188188
) -> Result<(), log::kv::Error> {
189189
self.0
190-
.serialize_entry(key.as_str(), &value.to_string())
190+
.serialize_entry(key.as_str(), &value)
191191
.map_err(|e| log::kv::Error::boxed(e.to_string()))?;
192192
Ok(())
193193
}
@@ -211,7 +211,7 @@ mod kv {
211211
mod test {
212212
#[cfg(feature = "chrono")]
213213
use chrono::{DateTime, Local};
214-
use log::Level;
214+
use log::{Level, Record};
215215

216216
use super::*;
217217
use crate::encode::writer::simple::SimpleWriter;
@@ -230,6 +230,15 @@ mod test {
230230
let thread = "encode::json::test::default";
231231
log_mdc::insert("foo", "bar");
232232

233+
#[cfg(feature = "log_kv")]
234+
#[derive(serde::Serialize)]
235+
struct SerdeValue {
236+
id: u32,
237+
}
238+
239+
#[cfg(feature = "log_kv")]
240+
let serde_value = SerdeValue { id: 42 };
241+
233242
let encoder = JsonEncoder::new();
234243

235244
let mut record_builder = Record::builder();
@@ -241,19 +250,25 @@ mod test {
241250
.line(Some(line));
242251

243252
#[cfg(feature = "log_kv")]
244-
record_builder.key_values(&[("log_foo", "log_bar")]);
253+
let kvs = [
254+
("log_foo", log::kv::Value::from("log_bar")),
255+
("serde_val", log::kv::Value::from_serde(&serde_value)),
256+
];
257+
#[cfg(feature = "log_kv")]
258+
record_builder.key_values(&kvs);
245259

246260
let mut buf = vec![];
247261
encoder
248262
.encode_inner(
249263
&mut SimpleWriter(&mut buf),
250264
time,
251-
&record_builder.args(format_args!("{}", message)).build(),
265+
&record_builder.args(format_args!("{message}")).build(),
252266
)
253267
.unwrap();
254268

255269
#[cfg(feature = "log_kv")]
256-
let expected_attributes = ",\"attributes\":{\"log_foo\":\"log_bar\"}";
270+
let expected_attributes =
271+
",\"attributes\":{\"log_foo\":\"log_bar\",\"serde_val\":{\"id\":42}}";
257272
#[cfg(not(feature = "log_kv"))]
258273
let expected_attributes = "";
259274

0 commit comments

Comments
 (0)