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