pub struct TimingLayer<S = ByName, E = ByMessage>{ /* private fields */ }
Expand description
Timing-gathering tracing layer.
This type is constructed using a Builder
.
See the [crate-level docs] for details.
Implementations§
Source§impl<S, E> TimingLayer<S, E>
impl<S, E> TimingLayer<S, E>
Sourcepub fn force_synchronize(&self)
pub fn force_synchronize(&self)
Force all current timing information to be refreshed immediately.
Note that this will interrupt all concurrent metrics gathering until it returns.
Sourcepub fn with_histograms<F, R>(&self, f: F) -> R
pub fn with_histograms<F, R>(&self, f: F) -> R
Access the timing histograms.
Be aware that the contained histograms are not automatically updated to reflect recently
gathered samples. For each histogram you wish to read from, you must call refresh
or
refresh_timeout
to gather up-to-date samples.
For information about what you can do with the histograms, see the hdrhistogram
documentation.
Source§impl<S, E> TimingLayer<S, E>
impl<S, E> TimingLayer<S, E>
Sourcepub fn downcaster(&self) -> Downcaster<S, E>
pub fn downcaster(&self) -> Downcaster<S, E>
Returns an identifier that can later be used to get access to this TimingLayer
after it has been turned into a tracing::Dispatch
.
use tracing::*;
use tracing_timing::{Builder, Histogram, TimingLayer};
use tracing_subscriber::{registry::Registry, Layer};
let layer = Builder::default()
.layer(|| Histogram::new_with_max(1_000_000, 2).unwrap());
let downcaster = layer.downcaster();
let dispatch = Dispatch::new(layer.with_subscriber(Registry::default()));
// ...
// code that hands off clones of the dispatch
// maybe to other threads
// ...
downcaster.downcast(&dispatch).unwrap().with_histograms(|hs| {
for (span_group, hs) in hs {
for (event_group, h) in hs {
// make sure we see the latest samples:
h.refresh();
// print the median:
println!("{} -> {}: {}ns", span_group, event_group, h.value_at_quantile(0.5))
}
}
});
Trait Implementations§
Source§impl<S, E> Debug for TimingLayer<S, E>
impl<S, E> Debug for TimingLayer<S, E>
Source§impl<S, SG, EG> Layer<S> for TimingLayer<SG, EG>
impl<S, SG, EG> Layer<S> for TimingLayer<SG, EG>
Source§fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)
fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)
Notifies this layer that a new span was constructed with the given
Attributes
and Id
.Source§fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)
fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)
Notifies this layer that an event has occurred.
Source§fn on_close(&self, id: Id, ctx: Context<'_, S>)
fn on_close(&self, id: Id, ctx: Context<'_, S>)
Notifies this layer that the span with the given ID has been closed.
Source§fn on_register_dispatch(&self, subscriber: &Dispatch)
fn on_register_dispatch(&self, subscriber: &Dispatch)
Performs late initialization when installing this layer as a
Subscriber
. Read moreSource§fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest
fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest
Registers a new callsite with this layer, returning whether or not
the layer is interested in being notified about the callsite, similarly
to
Subscriber::register_callsite
. Read moreSource§fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool
fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool
Returns
true
if this layer is interested in a span or event with the
given metadata
in the current Context
, similarly to
Subscriber::enabled
. Read moreSource§fn on_record(&self, _span: &Id, _values: &Record<'_>, _ctx: Context<'_, S>)
fn on_record(&self, _span: &Id, _values: &Record<'_>, _ctx: Context<'_, S>)
Notifies this layer that a span with the given
Id
recorded the given
values
.Source§fn on_follows_from(&self, _span: &Id, _follows: &Id, _ctx: Context<'_, S>)
fn on_follows_from(&self, _span: &Id, _follows: &Id, _ctx: Context<'_, S>)
Notifies this layer that a span with the ID
span
recorded that it
follows from the span with the ID follows
.Source§fn on_enter(&self, _id: &Id, _ctx: Context<'_, S>)
fn on_enter(&self, _id: &Id, _ctx: Context<'_, S>)
Notifies this layer that a span with the given ID was entered.
Source§fn on_exit(&self, _id: &Id, _ctx: Context<'_, S>)
fn on_exit(&self, _id: &Id, _ctx: Context<'_, S>)
Notifies this layer that the span with the given ID was exited.
Source§fn on_id_change(&self, _old: &Id, _new: &Id, _ctx: Context<'_, S>)
fn on_id_change(&self, _old: &Id, _new: &Id, _ctx: Context<'_, S>)
Notifies this layer that a span ID has been cloned, and that the
subscriber returned a different ID.
Source§fn and_then<L>(self, layer: L) -> Layered<L, Self, S>
fn and_then<L>(self, layer: L) -> Layered<L, Self, S>
Composes this layer around the given
Layer
, returning a Layered
struct implementing Layer
. Read moreSource§fn with_subscriber(self, inner: S) -> Layered<Self, S>where
Self: Sized,
fn with_subscriber(self, inner: S) -> Layered<Self, S>where
Self: Sized,
Composes this
Layer
with the given Subscriber
, returning a
Layered
struct that implements Subscriber
. Read moreSource§fn with_filter<F>(self, filter: F) -> Filtered<Self, F, S>
fn with_filter<F>(self, filter: F) -> Filtered<Self, F, S>
Auto Trait Implementations§
impl<S = ByName, E = ByMessage> !Freeze for TimingLayer<S, E>
impl<S, E> RefUnwindSafe for TimingLayer<S, E>where
S: RefUnwindSafe,
E: RefUnwindSafe,
impl<S, E> Send for TimingLayer<S, E>
impl<S, E> Sync for TimingLayer<S, E>
impl<S, E> Unpin for TimingLayer<S, E>
impl<S, E> UnwindSafe for TimingLayer<S, E>where
S: UnwindSafe,
E: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more