diff --git a/examples/http-tower-trace/Cargo.toml b/examples/http-tower-trace/Cargo.toml new file mode 100644 index 00000000..2b8f7a60 --- /dev/null +++ b/examples/http-tower-trace/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "http-tower-trace" +version = "0.1.0" +edition = "2021" + + +# Use cargo-edit(https://github.com/killercup/cargo-edit#installation) +# to manage dependencies. +# Running `cargo add DEPENDENCY_NAME` will +# add the latest version of a dependency to the list, +# and it will keep the alphabetic ordering for you. + +[dependencies] +lambda_http = { path = "../../lambda-http" } +lambda_runtime = "0.5.1" +tokio = { version = "1", features = ["macros"] } +tower-http = { version = "0.3.4", features = ["trace"] } +tracing = { version = "0.1", features = ["log"] } +tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt"] } diff --git a/examples/http-tower-trace/src/main.rs b/examples/http-tower-trace/src/main.rs new file mode 100644 index 00000000..ec7020c1 --- /dev/null +++ b/examples/http-tower-trace/src/main.rs @@ -0,0 +1,22 @@ +use lambda_http::{run, tower::ServiceBuilder, Error}; +use lambda_http::{Request, Response}; +use tower_http::trace::{DefaultOnRequest, DefaultOnResponse, TraceLayer}; +use tracing::Level; + +async fn handler(_req: Request) -> Result, Error> { + Ok(Response::new("Success".into())) +} + +#[tokio::main] +async fn main() -> Result<(), Error> { + tracing_subscriber::fmt().without_time().init(); + + let layer = TraceLayer::new_for_http() + .on_request(DefaultOnRequest::new().level(Level::INFO)) + .on_response(DefaultOnResponse::new().level(Level::INFO)); + + let service = ServiceBuilder::new().layer(layer).service_fn(handler); + + run(service).await?; + Ok(()) +}