pub struct BreadcrumbLayer { /* private fields */ }Expand description
Adds tracing events as Sentry breadcrumbs.
Without a filter, events at every level become breadcrumbs. Configure a filter to limit
breadcrumb volume; see BreadcrumbLayer::new for the recommended levels.
Using this layer alongside the legacy SentryLayer is unsupported.
Use either the legacy layer or the individual layers, not both.
Implementations§
Source§impl BreadcrumbLayer
impl BreadcrumbLayer
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a layer that adds tracing events as Sentry breadcrumbs.
For most users, we would recommend using the LogLayer instead of this
layer, as logs are sent regardless of whether an error occurs.
Breadcrumbs are only sent attached to Sentry error events. Users using this layer may therefore
also wish to enable the ErrorLayer.
§Filtering
Without a filter, events at every level become breadcrumbs. Configure a filter to limit
breadcrumb volume. We recommend capturing WARN and INFO events. If you also use the error layer, exclude ERROR
events, which would otherwise duplicate the error event as a breadcrumb. If a custom filter
sends the same event to both layers, install the breadcrumb layer before the error layer so
that breadcrumb is included in the error.
use sentry::integrations::tracing::{BreadcrumbLayer, ErrorLayer};
use tracing::Level;
use tracing_subscriber::filter::{filter_fn, LevelFilter};
tracing_subscriber::registry()
.with(
BreadcrumbLayer::new().with_filter(filter_fn(|metadata| {
matches!(*metadata.level(), Level::WARN | Level::INFO)
})),
)
.with(ErrorLayer::new().with_filter(LevelFilter::ERROR))
.init();
// These will be captured as breadcrumbs ...
tracing::info!("INFO breadcrumb");
tracing::warn!("WARN breadcrumb");
// ... but this will not be.
tracing::debug!("DEBUG breadcrumb");
// This will not be captured as a breadcrumb, but as an error event by the error layer. The
// breadcrumbs above will be contained in that error event.
tracing::error!("ERROR event");Sourcepub fn enable_span_attributes(self) -> Self
pub fn enable_span_attributes(self) -> Self
Include attributes of parent spans in breadcrumbs.
We can only include spans captured by a super::SpanLayer on the same subscriber. So,
this option only has any effect when the SpanLayer is installed.
§Filtering
Parent-span attributes are included only when the span is accepted by both SpanLayer
and BreadcrumbLayer. A filter that only accepts WARN and INFO metadata therefore
omits attributes from spans at other levels.
To include attributes from all spans captured by SpanLayer, we recommend accepting all
spans in this layer’s filter, while filtering events to the desired levels, like so:
Trait Implementations§
Source§impl Default for BreadcrumbLayer
impl Default for BreadcrumbLayer
Source§impl<S> Layer<S> for BreadcrumbLayerwhere
S: Subscriber + for<'a> LookupSpan<'a>,
impl<S> Layer<S> for BreadcrumbLayerwhere
S: Subscriber + for<'a> LookupSpan<'a>,
Source§fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)
fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)
Source§fn on_register_dispatch(&self, subscriber: &Dispatch)
fn on_register_dispatch(&self, subscriber: &Dispatch)
Subscriber. Read moreSource§fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest
fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest
Subscriber::register_callsite. Read moreSource§fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool
fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool
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_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)
fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)
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>)
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>)
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>)
Source§fn on_exit(&self, _id: &Id, _ctx: Context<'_, S>)
fn on_exit(&self, _id: &Id, _ctx: Context<'_, S>)
Source§fn on_close(&self, _id: Id, _ctx: Context<'_, S>)
fn on_close(&self, _id: Id, _ctx: Context<'_, S>)
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>)
Source§fn and_then<L>(self, layer: L) -> Layered<L, Self, S>
fn and_then<L>(self, layer: L) -> Layered<L, Self, S>
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,
Layer with the given Subscriber, returning a
Layered struct that implements Subscriber. Read more