Skip to main content

SpanLayer

Struct SpanLayer 

Source
#[non_exhaustive]
pub struct SpanLayer {}
Expand description

Captures tracing spans as Sentry transactions and spans.

Install this layer to capture spans; event layers do not manage the span lifecycle. Without a filter, this layer captures spans at every level. Configure a filter to limit span volume; see SpanLayer::new for the recommended levels.

Using this layer alongside the legacy SentryLayer is unsupported. Combining the two layers can panic when a span is created. Use either the legacy layer or the individual layers, not both.

Implementations§

Source§

impl SpanLayer

Source

pub fn new() -> Self

Creates a layer that captures tracing spans as Sentry transactions and spans.

§Filtering

Without a filter, this layer captures spans at every level. Configure a level filter to limit span volume. We recommend capturing spans at the INFO level, and more severe.

use sentry::integrations::tracing::SpanLayer;
use tracing_subscriber::filter::LevelFilter;

tracing_subscriber::registry()
    .with(SpanLayer::new().with_filter(LevelFilter::INFO))
    .init();

// This will be captured ...
let _info = tracing::info_span!("INFO span").entered();

// ... but this will not be, due to LevelFilter::INFO being set.
let _debug = tracing::debug_span!("DEBUG span").entered();

Trait Implementations§

Source§

impl Default for SpanLayer

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<S> Layer<S> for SpanLayer
where S: Subscriber + for<'a> LookupSpan<'a>,

Source§

fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)

When a new Span gets created, start a new sentry span, setting it as the current sentry span.

Source§

fn on_enter(&self, id: &Id, ctx: Context<'_, S>)

Sets the entered span as current sentry span.

A tracing span can be entered and exited multiple times, for example, when using a tracing::Instrumented future.

Spans must be exited on the same thread that they are entered. The sentry-tracing integration’s behavior is undefined if spans are exited on threads other than the one they are entered from; specifically, doing so will likely cause data to bleed between Hubs in unexpected ways.

Source§

fn on_exit(&self, id: &Id, ctx: Context<'_, S>)

Drop the current span’s HubSwitchGuard to restore the parent Hub.

Source§

fn on_close(&self, id: Id, ctx: Context<'_, S>)

Finish the underlying sentry span when the tracing span closes.

Source§

fn on_record(&self, span: &Id, values: &Record<'_>, ctx: Context<'_, S>)

Implement the writing of extra data to span.

Source§

fn on_register_dispatch(&self, subscriber: &Dispatch)

Performs late initialization when installing this layer as a Subscriber. Read more
Source§

fn on_layer(&mut self, subscriber: &mut S)

Performs late initialization when attaching a Layer to a Subscriber. Read more
Source§

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 more
Source§

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 more
Source§

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 event_enabled(&self, _event: &Event<'_>, _ctx: Context<'_, S>) -> bool

Called before on_event, to determine if on_event should be called. Read more
Source§

fn on_event(&self, _event: &Event<'_>, _ctx: Context<'_, S>)

Notifies this layer that an event has occurred.
Source§

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>
where L: Layer<S>, Self: Sized,

Composes this layer around the given Layer, returning a Layered struct implementing Layer. Read more
Source§

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 more
Source§

fn boxed(self) -> Box<dyn Layer<S> + Send + Sync>
where Self: Sized + Layer<S> + Send + Sync + 'static, S: Subscriber,

Available on crate features alloc or std only.
Erases the type of this Layer, returning a Boxed dyn Layer trait object. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.