1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
//! Collects and records trace data. pub use tracing_core::collect::*; #[cfg(feature = "std")] #[cfg_attr(docsrs, doc(cfg(feature = "std")))] pub use tracing_core::dispatch::DefaultGuard; /// Sets this collector as the default for the duration of a closure. /// /// The default collector is used when creating a new [`Span`] or /// [`Event`], _if no span is currently executing_. If a span is currently /// executing, new spans or events are dispatched to the collector that /// tagged that span, instead. /// /// [`Span`]: super::span::Span /// [`Collect`]: super::collect::Collect /// [`Event`]: tracing_core::Event #[cfg(feature = "std")] #[cfg_attr(docsrs, doc(cfg(feature = "std")))] pub fn with_default<T, C>(collector: C, f: impl FnOnce() -> T) -> T where C: Collect + Send + Sync + 'static, { crate::dispatch::with_default(&crate::Dispatch::new(collector), f) } /// Sets this collector as the global default for the duration of the entire program. /// Will be used as a fallback if no thread-local collector has been set in a thread (using `with_default`.) /// /// Can only be set once; subsequent attempts to set the global default will fail. /// Returns whether the initialization was successful. /// /// Note: Libraries should *NOT* call `set_global_default()`! That will cause conflicts when /// executables try to set them later. /// /// [span]: super::span #[cfg(feature = "alloc")] #[cfg_attr(docsrs, doc(cfg(any(feature = "std", feature = "alloc"))))] pub fn set_global_default<S>(collector: S) -> Result<(), SetGlobalDefaultError> where S: Collect + Send + Sync + 'static, { crate::dispatch::set_global_default(crate::Dispatch::new(collector)) } /// Sets the collector as the default for the duration of the lifetime of the /// returned [`DefaultGuard`] /// /// The default collector is used when creating a new [`Span`] or /// [`Event`], _if no span is currently executing_. If a span is currently /// executing, new spans or events are dispatched to the collector that /// tagged that span, instead. /// /// [`Span`]: super::span::Span /// [`Event`]: tracing_core::Event #[cfg(feature = "std")] #[cfg_attr(docsrs, doc(cfg(feature = "std")))] #[must_use = "Dropping the guard unregisters the collector."] pub fn set_default<S>(collector: S) -> DefaultGuard where S: Collect + Send + Sync + 'static, { crate::dispatch::set_default(&crate::Dispatch::new(collector)) } pub use tracing_core::dispatch::SetGlobalDefaultError;