pub struct Dispatch { /* private fields */ }
Expand description
Dispatch
trace data to a Collect
.
Implementations§
source§impl Dispatch
impl Dispatch
sourcepub fn from_static(collector: &'static (dyn Collect + Send + Sync)) -> Dispatch
pub fn from_static(collector: &'static (dyn Collect + Send + Sync)) -> Dispatch
Returns a Dispatch
that forwards to the given static collector.
Unlike [Dispatch::new
], this function is always available on all
platforms, even when the std
or alloc
features are disabled.
In order to use from_static
, the Collector
itself must be stored in
a static. For example:
struct MyCollector {
// ...
}
impl tracing_core::Collect for MyCollector {
// ...
}
static COLLECTOR: MyCollector = MyCollector {
// ...
};
fn main() {
use tracing_core::dispatch::{self, Dispatch};
let dispatch = Dispatch::from_static(&COLLECTOR);
dispatch::set_global_default(dispatch)
.expect("no global default collector should have been set previously!");
}
Constructing the collector in a static initializer may make some forms
of runtime configuration more challenging. If this is the case, users
with access to liballoc
or the Rust standard library are encouraged to
use [Dispatch::new
] rather than from_static
. no_std
users who
cannot allocate or do not have access to liballoc
may want to consider
the once_cell
crate, or another library which allows lazy
initialization of statics.
sourcepub fn downgrade(&self) -> WeakDispatch
pub fn downgrade(&self) -> WeakDispatch
Creates a WeakDispatch
from this Dispatch
.
A WeakDispatch
is similar to a Dispatch
, but it does not prevent
the underlying collector from being dropped. Instead, it only permits
access while other references to the collector exist. This is equivalent
to the standard library’s Arc::downgrade
method, but for Dispatch
rather than Arc
.
The primary use for creating a WeakDispatch
is to allow a collector
to hold a cyclical reference to itself without creating a memory leak.
See here for details.
sourcepub fn register_callsite(
&self,
metadata: &'static Metadata<'static>,
) -> Interest
pub fn register_callsite( &self, metadata: &'static Metadata<'static>, ) -> Interest
Registers a new callsite with this collector, returning whether or not the collector is interested in being notified about the callsite.
This calls the register_callsite
function on the Collect
that this Dispatch
forwards to.
sourcepub fn new_span(&self, span: &Attributes<'_>) -> Id
pub fn new_span(&self, span: &Attributes<'_>) -> Id
sourcepub fn record_follows_from(&self, span: &Id, follows: &Id)
pub fn record_follows_from(&self, span: &Id, follows: &Id)
Adds an indication that span
follows from the span with the id
follows
.
This calls the record_follows_from
function on the Collect
that this Dispatch
forwards to.
sourcepub fn clone_span(&self, id: &Id) -> Id
pub fn clone_span(&self, id: &Id) -> Id
Notifies the collector that a span ID has been cloned.
This function must only be called with span IDs that were returned by
this Dispatch
’s new_span
function. The tracing
crate upholds
this guarantee and any other libraries implementing instrumentation APIs
must as well.
This calls the clone_span
function on the Collect
that this
Dispatch
forwards to.
sourcepub fn drop_span(&self, id: Id)
👎Deprecated since 0.1.2: use Dispatch::try_close
instead
pub fn drop_span(&self, id: Id)
Dispatch::try_close
insteadNotifies the collector that a span ID has been dropped.
This function must only be called with span IDs that were returned by
this Dispatch
’s new_span
function. The tracing
crate upholds
this guarantee and any other libraries implementing instrumentation APIs
must as well.
This calls the drop_span
function on the Collect
that this
Dispatch
forwards to.
Deprecated: The
try_close
method is functionally identical, but returnstrue
if the span is now closed. It should be used instead of this method.
sourcepub fn try_close(&self, id: Id) -> bool
pub fn try_close(&self, id: Id) -> bool
Notifies the collector that a span ID has been dropped, and returns
true
if there are now 0 IDs referring to that span.
This function must only be called with span IDs that were returned by
this Dispatch
’s new_span
function. The tracing
crate upholds
this guarantee and any other libraries implementing instrumentation APIs
must as well.
This calls the try_close
function on the Collect
trait
that this Dispatch
forwards to.