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§async fn init(&mut self, info: &mut Info)
async fn init(&mut self, info: &mut Info)
Source§async fn run(&self, conn: Conn) -> Conn
async fn run(&self, conn: Conn) -> Conn
Source§async fn before_send(&self, conn: Conn) -> Conn
async fn before_send(&self, conn: Conn) -> Conn
§fn has_upgrade(&self, upgrade: &Upgrade) -> bool
fn has_upgrade(&self, upgrade: &Upgrade) -> 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(&self, upgrade: Upgrade) -> impl Future<Output = ()> + Send
fn upgrade(&self, upgrade: Upgrade) -> impl Future<Output = ()> + Send
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.