1
0
mirror of https://github.com/actix/actix-extras.git synced 2025-02-23 19:03:03 +01:00

Bound type-param of RootSpanBuilder::on_request_end (#93)

This commit is contained in:
Harish Rajagopal 2022-12-19 10:54:32 +01:00 committed by GitHub
parent c95a781204
commit 8e5b09b379
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 7 deletions

View File

@ -97,6 +97,7 @@
//! We could add a `client_id` property to the root span using a custom builder, `DomainRootSpanBuilder`: //! We could add a `client_id` property to the root span using a custom builder, `DomainRootSpanBuilder`:
//! //!
//! ```rust //! ```rust
//! use actix_web::body::MessageBody;
//! use actix_web::dev::{ServiceResponse, ServiceRequest}; //! use actix_web::dev::{ServiceResponse, ServiceRequest};
//! use actix_web::Error; //! use actix_web::Error;
//! use tracing_actix_web::{TracingLogger, DefaultRootSpanBuilder, RootSpanBuilder}; //! use tracing_actix_web::{TracingLogger, DefaultRootSpanBuilder, RootSpanBuilder};
@ -110,7 +111,7 @@
//! tracing::info_span!("Request", client_id) //! tracing::info_span!("Request", client_id)
//! } //! }
//! //!
//! fn on_request_end<B>(_span: Span, _outcome: &Result<ServiceResponse<B>, Error>) {} //! fn on_request_end<B: MessageBody>(_span: Span, _outcome: &Result<ServiceResponse<B>, Error>) {}
//! } //! }
//! //!
//! let custom_middleware = TracingLogger::<DomainRootSpanBuilder>::new(); //! let custom_middleware = TracingLogger::<DomainRootSpanBuilder>::new();
@ -123,6 +124,7 @@
//! We can do better! //! We can do better!
//! //!
//! ```rust //! ```rust
//! use actix_web::body::MessageBody;
//! use actix_web::dev::{ServiceResponse, ServiceRequest}; //! use actix_web::dev::{ServiceResponse, ServiceRequest};
//! use actix_web::Error; //! use actix_web::Error;
//! use tracing_actix_web::{TracingLogger, DefaultRootSpanBuilder, RootSpanBuilder}; //! use tracing_actix_web::{TracingLogger, DefaultRootSpanBuilder, RootSpanBuilder};
@ -136,7 +138,7 @@
//! tracing_actix_web::root_span!(request, client_id) //! tracing_actix_web::root_span!(request, client_id)
//! } //! }
//! //!
//! fn on_request_end<B>(span: Span, outcome: &Result<ServiceResponse<B>, Error>) { //! fn on_request_end<B: MessageBody>(span: Span, outcome: &Result<ServiceResponse<B>, Error>) {
//! DefaultRootSpanBuilder::on_request_end(span, outcome); //! DefaultRootSpanBuilder::on_request_end(span, outcome);
//! } //! }
//! } //! }
@ -155,6 +157,7 @@
//! the span level: //! the span level:
//! //!
//! ```rust //! ```rust
//! use actix_web::body::MessageBody;
//! use actix_web::dev::{ServiceResponse, ServiceRequest}; //! use actix_web::dev::{ServiceResponse, ServiceRequest};
//! use actix_web::Error; //! use actix_web::Error;
//! use tracing_actix_web::{TracingLogger, DefaultRootSpanBuilder, RootSpanBuilder, Level}; //! use tracing_actix_web::{TracingLogger, DefaultRootSpanBuilder, RootSpanBuilder, Level};
@ -172,7 +175,7 @@
//! tracing_actix_web::root_span!(level = level, request) //! tracing_actix_web::root_span!(level = level, request)
//! } //! }
//! //!
//! fn on_request_end<B>(span: Span, outcome: &Result<ServiceResponse<B>, Error>) { //! fn on_request_end<B: MessageBody>(span: Span, outcome: &Result<ServiceResponse<B>, Error>) {
//! DefaultRootSpanBuilder::on_request_end(span, outcome); //! DefaultRootSpanBuilder::on_request_end(span, outcome);
//! } //! }
//! } //! }
@ -187,6 +190,7 @@
//! to your root span as it becomes available: //! to your root span as it becomes available:
//! //!
//! ```rust //! ```rust
//! use actix_web::body::MessageBody;
//! use actix_web::dev::{ServiceResponse, ServiceRequest}; //! use actix_web::dev::{ServiceResponse, ServiceRequest};
//! use actix_web::{Error, HttpResponse}; //! use actix_web::{Error, HttpResponse};
//! use tracing_actix_web::{RootSpan, DefaultRootSpanBuilder, RootSpanBuilder}; //! use tracing_actix_web::{RootSpan, DefaultRootSpanBuilder, RootSpanBuilder};
@ -218,7 +222,7 @@
//! ) //! )
//! } //! }
//! //!
//! fn on_request_end<B>(span: Span, response: &Result<ServiceResponse<B>, Error>) { //! fn on_request_end<B: MessageBody>(span: Span, response: &Result<ServiceResponse<B>, Error>) {
//! DefaultRootSpanBuilder::on_request_end(span, response); //! DefaultRootSpanBuilder::on_request_end(span, response);
//! } //! }
//! } //! }

View File

@ -1,4 +1,5 @@
use crate::root_span; use crate::root_span;
use actix_web::body::MessageBody;
use actix_web::dev::{ServiceRequest, ServiceResponse}; use actix_web::dev::{ServiceRequest, ServiceResponse};
use actix_web::http::StatusCode; use actix_web::http::StatusCode;
use actix_web::{Error, ResponseError}; use actix_web::{Error, ResponseError};
@ -10,7 +11,7 @@ use tracing::Span;
/// [`TracingLogger`]: crate::TracingLogger /// [`TracingLogger`]: crate::TracingLogger
pub trait RootSpanBuilder { pub trait RootSpanBuilder {
fn on_request_start(request: &ServiceRequest) -> Span; fn on_request_start(request: &ServiceRequest) -> Span;
fn on_request_end<B>(span: Span, outcome: &Result<ServiceResponse<B>, Error>); fn on_request_end<B: MessageBody>(span: Span, outcome: &Result<ServiceResponse<B>, Error>);
} }
/// The default [`RootSpanBuilder`] for [`TracingLogger`]. /// The default [`RootSpanBuilder`] for [`TracingLogger`].
@ -40,7 +41,7 @@ impl RootSpanBuilder for DefaultRootSpanBuilder {
root_span!(level = crate::Level::INFO, request) root_span!(level = crate::Level::INFO, request)
} }
fn on_request_end<B>(span: Span, outcome: &Result<ServiceResponse<B>, Error>) { fn on_request_end<B: MessageBody>(span: Span, outcome: &Result<ServiceResponse<B>, Error>) {
match &outcome { match &outcome {
Ok(response) => { Ok(response) => {
if let Some(error) = response.response().error() { if let Some(error) = response.response().error() {

View File

@ -14,6 +14,7 @@
/// The first argument passed to `root_span!` must be a reference to an [`actix_web::dev::ServiceRequest`]. /// The first argument passed to `root_span!` must be a reference to an [`actix_web::dev::ServiceRequest`].
/// ///
/// ```rust /// ```rust
/// use actix_web::body::MessageBody;
/// use actix_web::dev::{ServiceResponse, ServiceRequest}; /// use actix_web::dev::{ServiceResponse, ServiceRequest};
/// use actix_web::Error; /// use actix_web::Error;
/// use tracing_actix_web::{TracingLogger, DefaultRootSpanBuilder, RootSpanBuilder, root_span}; /// use tracing_actix_web::{TracingLogger, DefaultRootSpanBuilder, RootSpanBuilder, root_span};
@ -26,7 +27,7 @@
/// root_span!(request) /// root_span!(request)
/// } /// }
/// ///
/// fn on_request_end<B>(span: Span, outcome: &Result<ServiceResponse<B>, Error>) { /// fn on_request_end<B: MessageBody>(span: Span, outcome: &Result<ServiceResponse<B>, Error>) {
/// DefaultRootSpanBuilder::on_request_end(span, outcome); /// DefaultRootSpanBuilder::on_request_end(span, outcome);
/// } /// }
/// } /// }