tracing_gcloud_layer/
google_writer.rs1use serde_json::Value;
2use std::io::Write;
3use tokio::sync::mpsc;
4
5#[derive(Clone, Debug)]
11pub struct GoogleWriterHandle {
12 pub(crate) sender: mpsc::UnboundedSender<Value>,
13}
14
15impl Write for GoogleWriterHandle {
16 fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
22 let log_entry: Value = serde_json::from_slice(buf)
23 .map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidData, e))?;
24
25 if let Err(e) = self.sender.send(log_entry) {
26 tracing::error!("Failed to send log: {e}");
27 }
28
29 Ok(buf.len())
30 }
31
32 fn flush(&mut self) -> std::io::Result<()> {
33 Ok(())
34 }
35}