AppFlowy/frontend/rust-lib/lib-log/src/stream_log.rs
Nathan.fooo 3e32fac876
chore: pass platform info to rust side (#5079)
* chore: pass platform info to rust side

* chore: pass platform info to rust side

* chore: fix test

* chore: fix test

* chore: fix test

* chore: enable ios log
2024-04-07 21:36:55 +08:00

38 lines
683 B
Rust

use std::io;
use std::io::Write;
use std::sync::Arc;
use tracing_subscriber::fmt::MakeWriter;
pub struct StreamLog {
pub sender: Arc<dyn StreamLogSender>,
}
impl<'a> MakeWriter<'a> for StreamLog {
type Writer = SenderWriter;
fn make_writer(&'a self) -> Self::Writer {
SenderWriter {
sender: self.sender.clone(),
}
}
}
pub trait StreamLogSender: Send + Sync {
fn send(&self, message: &[u8]);
}
pub struct SenderWriter {
sender: Arc<dyn StreamLogSender>,
}
impl Write for SenderWriter {
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
self.sender.send(buf);
Ok(buf.len())
}
fn flush(&mut self) -> io::Result<()> {
Ok(())
}
}