tracing_modality/blocking/
mod.rs1mod layer;
2
3pub use crate::ingest::ModalityIngestThreadHandle;
4pub use crate::{timeline_id, InitError, Options, TimelineId};
5pub use layer::ModalityLayer;
6
7use anyhow::Context as _;
8use tracing::Dispatch;
9
10pub struct TracingModality {
18 ingest_handle: ModalityIngestThreadHandle,
19}
20
21impl TracingModality {
22 pub fn init() -> Result<Self, InitError> {
24 Self::init_with_options(Default::default())
25 }
26
27 pub fn init_with_options(opts: Options) -> Result<Self, InitError> {
29 let (layer, ingest_handle) =
30 ModalityLayer::init_with_options(opts).context("initialize ModalityLayer")?;
31
32 let disp = Dispatch::new(layer.into_subscriber());
33 tracing::dispatcher::set_global_default(disp).unwrap();
34
35 Ok(Self { ingest_handle })
36 }
37
38 pub fn finish(self) {
40 self.ingest_handle.finish();
41 }
42}