diff --git a/src/codecs/format/json.rs b/src/codecs/format/json.rs index 33b47e984737b..153f5d8668be3 100644 --- a/src/codecs/format/json.rs +++ b/src/codecs/format/json.rs @@ -117,14 +117,12 @@ impl Encoder for JsonSerializer { type Error = crate::Error; fn encode(&mut self, event: Event, buffer: &mut bytes::BytesMut) -> Result<(), Self::Error> { - let json = match event { - Event::Log(log) => serde_json::to_vec(&log), - Event::Metric(metric) => serde_json::to_vec(&metric), - }?; - - buffer.put(json.as_slice()); - - Ok(()) + let writer = buffer.writer(); + match event { + Event::Log(log) => serde_json::to_writer(writer, &log), + Event::Metric(metric) => serde_json::to_writer(writer, &metric), + } + .map_err(Into::into) } }