pub struct PerfettoLayer<W = fn() -> Stdout> { /* private fields */ }Expand description
A Layer that records span as perfetto’s
TYPE_SLICE_BEGIN/TYPE_SLICE_END, and event as TYPE_INSTANT.
PerfettoLayer will output the records as encoded protobuf messages.
Implementations§
Source§impl<W: PerfettoWriter> PerfettoLayer<W>
impl<W: PerfettoWriter> PerfettoLayer<W>
pub fn new(writer: W) -> Self
Sourcepub fn with_debug_annotations(self, value: bool) -> Self
pub fn with_debug_annotations(self, value: bool) -> Self
Configures whether or not spans/events shoulde be recored with their metadata and fields.
Sourcepub fn with_filter_by_marker(self, filter: fn(&str) -> bool) -> Self
pub fn with_filter_by_marker(self, filter: fn(&str) -> bool) -> Self
Configures whether or not spans/events be recored based on the occurrence of a field name.
Sometimes, not all the events/spans should be treated as perfetto trace, you can append a field to indicate that this even/span should be captured into trace:
use tracing_perfetto::PerfettoLayer;
use tracing_subscriber::{layer::SubscriberExt, Registry, prelude::*};
let layer = PerfettoLayer::new(std::fs::File::open("/tmp/test.pftrace").unwrap())
.with_filter_by_marker(|field_name| field_name == "perfetto");
tracing_subscriber::registry().with(layer).init();
// this event will be record, as it contains a `perfetto` field
tracing::info!(perfetto = true, my_bool = true);
// this span will be record, as it contains a `perfetto` field
#[tracing::instrument(fields(perfetto = true))]
fn to_instr() {
// this event will be ignored
tracing::info!(my_bool = true);
}Trait Implementations§
Source§impl<W, S> Layer<S> for PerfettoLayer<W>
impl<W, S> Layer<S> for PerfettoLayer<W>
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_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_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_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<W> Freeze for PerfettoLayer<W>where
W: Freeze,
impl<W> RefUnwindSafe for PerfettoLayer<W>where
W: RefUnwindSafe,
impl<W> Send for PerfettoLayer<W>where
W: Send,
impl<W> Sync for PerfettoLayer<W>where
W: Sync,
impl<W> Unpin for PerfettoLayer<W>where
W: Unpin,
impl<W> UnwindSafe for PerfettoLayer<W>where
W: 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