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
//! 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 current thread for the duration
/// of a closure.
///
/// The default collector is used when creating a new [`Span`] or
/// [`Event`].
///
/// [`Span`]: super::span::Span
/// [`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<C>(collector: C) -> Result<(), SetGlobalDefaultError>
where
C: Collect + Send + Sync + 'static,
{
crate::dispatch::set_global_default(crate::Dispatch::new(collector))
}
/// Sets the collector as the default for the current thread for the duration of
/// the lifetime of the returned [`DefaultGuard`].
///
/// The default collector is used when creating a new [`Span`] or
/// [`Event`].
///
/// [`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<C>(collector: C) -> DefaultGuard
where
C: Collect + Send + Sync + 'static,
{
crate::dispatch::set_default(&crate::Dispatch::new(collector))
}
pub use tracing_core::dispatch::SetGlobalDefaultError;