diff options
-rw-r--r-- | src/writer.rs | 40 | ||||
-rw-r--r-- | src/writer/loggable.rs | 4 |
2 files changed, 27 insertions, 17 deletions
diff --git a/src/writer.rs b/src/writer.rs index 205ee7f..1818fca 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -534,9 +534,11 @@ impl<W: AsyncWrite + Unpin + Send> Writer<Loggable<W>> { pub async fn write_full(&mut self, into_element: &impl IntoElement) -> Result<()> { let element = into_element.into_element(); self.write_element(&element).await?; - let bytes = &self.inner.ignore_end().take_log(); - let log = str::from_utf8(bytes).unwrap_or("failed to convert bytes written to str"); - info!("wrote element: {}", log); + + let bytes = self.inner.ignore_end().take_log(); + let log = String::from_utf8(bytes) + .map_err(|err| format!("failed to convert bytes written to str: {err}")); + info!("wrote element: {log:?}"); Ok(()) } @@ -544,9 +546,11 @@ impl<W: AsyncWrite + Unpin + Send> Writer<Loggable<W>> { pub async fn write_start(&mut self, into_element: &impl IntoElement) -> Result<()> { let element = into_element.into_element(); self.write_element_start(&element).await?; - let bytes = &self.inner.ignore_end().take_log(); - let log = str::from_utf8(bytes).unwrap_or("failed to convert bytes written to str"); - info!("wrote element start: {}", log); + + let bytes = self.inner.ignore_end().take_log(); + let log = String::from_utf8(bytes) + .map_err(|err| format!("failed to convert bytes written to str: {err}")); + info!("wrote element start: {log:?}"); Ok(()) } @@ -555,9 +559,11 @@ impl<W: AsyncWrite + Unpin + Send> Writer<Loggable<W>> { for content in &into_element.get_content() { self.write_content(content).await?; } - let bytes = &self.inner.ignore_end().take_log(); - let log = str::from_utf8(bytes).unwrap_or("failed to convert bytes written to str"); - info!("wrote element content: {}", log); + + let bytes = self.inner.ignore_end().take_log(); + let log = String::from_utf8(bytes) + .map_err(|err| format!("failed to convert bytes written to str: {err}")); + info!("wrote element content: {log:?}"); Ok(()) } @@ -565,18 +571,22 @@ impl<W: AsyncWrite + Unpin + Send> Writer<Loggable<W>> { pub async fn write(&mut self, into_content: &impl IntoContent) -> Result<()> { let content = into_content.into_content(); self.write_content(&content).await?; - let bytes = &self.inner.ignore_end().take_log(); - let log = str::from_utf8(bytes).unwrap_or("failed to convert bytes written to str"); - info!("wrote element: {}", log); + + let bytes = self.inner.ignore_end().take_log(); + let log = String::from_utf8(bytes) + .map_err(|err| format!("failed to convert bytes written to str: {err}")); + info!("wrote element: {log:?}"); Ok(()) } /// Navigate down the document structure and write the end tag for the current element opened in the document context. pub async fn write_end(&mut self) -> Result<()> { self.write_end_tag().await?; - let bytes = &self.inner.ignore_end().take_log(); - let log = str::from_utf8(bytes).unwrap_or("failed to convert bytes written to str"); - info!("wrote element end: {}", log); + + let bytes = self.inner.ignore_end().take_log(); + let log = String::from_utf8(bytes) + .map_err(|err| format!("failed to convert bytes written to str: {err}")); + info!("wrote element end: {log:?}"); Ok(()) } diff --git a/src/writer/loggable.rs b/src/writer/loggable.rs index 82f14a3..1b9f64a 100644 --- a/src/writer/loggable.rs +++ b/src/writer/loggable.rs @@ -33,8 +33,8 @@ impl<W> Loggable<W> { impl<W: AsyncWrite + Unpin + Send> Display for Loggable<W> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - let str = str::from_utf8(&self.log_buffer).unwrap_or("buffer to string conversion failed"); - f.write_str(str) + let str = String::from_utf8_lossy(&self.log_buffer); + write!(f, "{str}") } } |