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

Merge branch 'main' of github.com:LukeMathWalker/tracing-actix-web into main

This commit is contained in:
LukeMathWalker 2021-09-21 10:34:17 +02:00
commit a2f2d0d1d6
3 changed files with 11 additions and 11 deletions

View File

@ -30,7 +30,6 @@ emit_event_on_error = []
actix-web = { version = "=4.0.0-beta.9", default-features = false } actix-web = { version = "=4.0.0-beta.9", default-features = false }
tracing = "0.1.19" tracing = "0.1.19"
tracing-futures = "0.2.4" tracing-futures = "0.2.4"
futures = "0.3.5"
uuid = { version = "0.8.1", features = ["v4"] } uuid = { version = "0.8.1", features = ["v4"] }
opentelemetry_0_13_pkg = { package = "opentelemetry", version = "0.13", optional = true } opentelemetry_0_13_pkg = { package = "opentelemetry", version = "0.13", optional = true }
opentelemetry_0_14_pkg = { package = "opentelemetry", version = "0.14", optional = true } opentelemetry_0_14_pkg = { package = "opentelemetry", version = "0.14", optional = true }

View File

@ -1,8 +1,7 @@
use crate::{DefaultRootSpanBuilder, RequestId, RootSpan, RootSpanBuilder}; use crate::{DefaultRootSpanBuilder, RequestId, RootSpan, RootSpanBuilder};
use actix_web::dev::{Service, ServiceRequest, ServiceResponse, Transform}; use actix_web::dev::{Service, ServiceRequest, ServiceResponse, Transform};
use actix_web::{Error, HttpMessage, ResponseError}; use actix_web::{Error, HttpMessage, ResponseError};
use futures::future::{ok, Ready}; use std::future::{ready, Future, Ready};
use std::future::Future;
use std::pin::Pin; use std::pin::Pin;
use tracing::Span; use tracing::Span;
use tracing_futures::Instrument; use tracing_futures::Instrument;
@ -100,10 +99,10 @@ where
type Future = Ready<Result<Self::Transform, Self::InitError>>; type Future = Ready<Result<Self::Transform, Self::InitError>>;
fn new_transform(&self, service: S) -> Self::Future { fn new_transform(&self, service: S) -> Self::Future {
ok(TracingLoggerMiddleware { ready(Ok(TracingLoggerMiddleware {
service, service,
root_span_builder: std::marker::PhantomData::default(), root_span_builder: std::marker::PhantomData::default(),
}) }))
} }
} }
@ -134,7 +133,7 @@ where
let root_span_wrapper = RootSpan::new(root_span.clone()); let root_span_wrapper = RootSpan::new(root_span.clone());
req.extensions_mut().insert(root_span_wrapper); req.extensions_mut().insert(root_span_wrapper);
let fut = self.service.call(req); let fut = root_span.in_scope(|| self.service.call(req));
Box::pin( Box::pin(
async move { async move {
let outcome = fut.await; let outcome = fut.await;

View File

@ -56,11 +56,13 @@ impl RootSpanBuilder for DefaultRootSpanBuilder {
fn handle_error(span: Span, error: &actix_web::Error) { fn handle_error(span: Span, error: &actix_web::Error) {
let response_error = error.as_response_error(); let response_error = error.as_response_error();
span.record(
"exception.message", // pre-formatting errors is a workaround for https://github.com/tokio-rs/tracing/issues/1565
&tracing::field::display(response_error), let display = format!("{}", response_error);
); let debug = format!("{:?}", response_error);
span.record("exception.details", &tracing::field::debug(response_error)); span.record("exception.message", &tracing::field::display(display));
span.record("exception.details", &tracing::field::display(debug));
let status_code = response_error.status_code(); let status_code = response_error.status_code();
span.record("http.status_code", &status_code.as_u16()); span.record("http.status_code", &status_code.as_u16());