From 2389761ce7fc151afcdc23f8de236240167bca6c Mon Sep 17 00:00:00 2001 From: David Pedersen Date: Sat, 7 Aug 2021 22:11:55 +0200 Subject: [PATCH] Add dedicated tracing/logging example (#155) Useful to link to since several have asked. --- examples/README.md | 2 +- examples/tracing_aka_logging.rs | 37 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 examples/tracing_aka_logging.rs diff --git a/examples/README.md b/examples/README.md index 358ffa56..1b193f4e 100644 --- a/examples/README.md +++ b/examples/README.md @@ -18,7 +18,7 @@ - [`chat`](../examples/chat.rs) - Chat application example. - [`404`](../examples/404.rs) - Custom 404 page. - [`async-graphql`](../examples/async-graphql) - GraphQL example using [`async-graphql`](https://crates.io/crates/async-graphql). - +- [`tracing_aka_logging`](../examples/tracing_aka_logging) - How to setup and configure tracing/logging. # Community showcase diff --git a/examples/tracing_aka_logging.rs b/examples/tracing_aka_logging.rs new file mode 100644 index 00000000..1603cb16 --- /dev/null +++ b/examples/tracing_aka_logging.rs @@ -0,0 +1,37 @@ +//! Run with +//! +//! ```not_rust +//! cargo run --example tracing_aka_logging +//! ``` + +use axum::prelude::*; +use std::net::SocketAddr; +use tower_http::trace::TraceLayer; + +#[tokio::main] +async fn main() { + // Set the RUST_LOG, if it hasn't been explicitly defined + if std::env::var("RUST_LOG").is_err() { + std::env::set_var("RUST_LOG", "tracing_aka_logging=debug,tower_http=debug") + } + tracing_subscriber::fmt::init(); + + // build our application with a route + let app = route("/", get(handler)) + // `TraceLayer` is provided by tower-http so you have to add that as a dependency. + // It provides good defaults but is also very customizable. + // See https://docs.rs/tower-http/0.1.1/tower_http/trace/index.html for more details. + .layer(TraceLayer::new_for_http()); + + // run it + let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); + tracing::debug!("listening on {}", addr); + axum::Server::bind(&addr) + .serve(app.into_make_service()) + .await + .unwrap(); +} + +async fn handler() -> response::Html<&'static str> { + response::Html("

Hello, World!

") +}