Struct trillium_opentelemetry::Trace
source · pub struct Trace<T> { /* private fields */ }
Expand description
Trillium handler that instruments per-request spans as per semantic conventions for http.
Implementations§
source§impl<T: Tracer> Trace<T>
impl<T: Tracer> Trace<T>
sourcepub fn with_route<F>(self, route: F) -> Self
pub fn with_route<F>(self, route: F) -> Self
provides a route specification to include in the trace spans.
in order to avoid forcing anyone to use a particular router, this is provided as a configuration hook.
for use with trillium-router
,
use trillium_router::RouterConnExt;
trillium_opentelemetry::Metrics::new(&opentelemetry::global::meter("example"))
.with_route(|conn| conn.route().map(|r| r.to_string().into()));
sourcepub fn with_error_type<F>(self, error_type: F) -> Self
pub fn with_error_type<F>(self, error_type: F) -> Self
Provides an optional low-cardinality error type specification to include in the trace spans.
The implementation of this is application specific, but will often look like checking the
[Conn::state
] for an error enum and mapping that to a low-cardinality &'static str
.
sourcepub fn with_headers(
self,
headers: impl IntoIterator<Item = impl Into<HeaderName<'static>>>,
) -> Self
pub fn with_headers( self, headers: impl IntoIterator<Item = impl Into<HeaderName<'static>>>, ) -> Self
Specify a list of request headers to include in the trace spans
sourcepub fn with_local_address_and_port(self) -> Self
pub fn with_local_address_and_port(self) -> Self
Enable population of the local socket address and port in the trace spans.
This populates the network.local.address
and network.local.port
attributes.
Trait Implementations§
source§impl<T> Handler for Trace<T>
impl<T> Handler for Trace<T>
source§fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
info: &'life1 mut Info,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
info: &'life1 mut Info,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
source§fn run<'life0, 'async_trait>(
&'life0 self,
conn: Conn,
) -> Pin<Box<dyn Future<Output = Conn> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn run<'life0, 'async_trait>(
&'life0 self,
conn: Conn,
) -> Pin<Box<dyn Future<Output = Conn> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn before_send<'life0, 'async_trait>(
&'life0 self,
conn: Conn,
) -> Pin<Box<dyn Future<Output = Conn> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn before_send<'life0, 'async_trait>(
&'life0 self,
conn: Conn,
) -> Pin<Box<dyn Future<Output = Conn> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
§fn has_upgrade(&self, _upgrade: &Upgrade<BoxedTransport>) -> bool
fn has_upgrade(&self, _upgrade: &Upgrade<BoxedTransport>) -> bool
Handler::upgrade
]. The first
handler that responds true to this will receive ownership of the
[trillium::Upgrade
][crate::Upgrade] in a subsequent call to [Handler::upgrade
]§fn upgrade<'life0, 'async_trait>(
&'life0 self,
_upgrade: Upgrade<BoxedTransport>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn upgrade<'life0, 'async_trait>(
&'life0 self,
_upgrade: Upgrade<BoxedTransport>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Handler::has_upgrade
] and will only be called once for this
upgrade. There is no return value, and this function takes
exclusive ownership of the underlying transport once this is
called. You can downcast the transport to whatever the source
transport type is and perform any non-http protocol communication
that has been negotiated. You probably don’t want this unless
you’re implementing something like websockets. Please note that
for many transports such as TcpStreams, dropping the transport
(and therefore the Upgrade) will hang up / disconnect.Auto Trait Implementations§
impl<T> Freeze for Trace<T>where
T: Freeze,
impl<T> !RefUnwindSafe for Trace<T>
impl<T> Send for Trace<T>where
T: Send,
impl<T> Sync for Trace<T>where
T: Sync,
impl<T> Unpin for Trace<T>where
T: Unpin,
impl<T> !UnwindSafe for Trace<T>
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)