diff --git a/Cargo.lock b/Cargo.lock index c94648d..bf5fc87 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -194,6 +194,8 @@ dependencies = [ "reqwest", "serde", "tokio", + "tracing", + "tracing-subscriber", ] [[package]] @@ -990,6 +992,16 @@ dependencies = [ "tempfile", ] +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -1064,6 +1076,12 @@ version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "owo-colors" version = "4.2.1" @@ -1721,9 +1739,21 @@ checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tracing-core" version = "0.1.33" @@ -1744,15 +1774,42 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ + "nu-ansi-term", + "serde", + "serde_json", "sharded-slab", + "smallvec", "thread_local", "tracing-core", + "tracing-log", + "tracing-serde", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 4441691..70a804d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,3 +12,5 @@ pretty-hex = "0.3" reqwest = { version = "0.11", features = ["json"] } serde = { version = "1", features = ["derive"] } tokio = { version = "1", features = ["full"] } +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["json"] } diff --git a/src/main.rs b/src/main.rs index 60ff1f1..4568730 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,12 +9,25 @@ use axum::{ }; use reqwest::StatusCode; use serde::Deserialize; +use std::str::FromStr; +use tracing::{info, Level}; +use tracing_subscriber::{filter::Targets, layer::SubscriberExt, util::SubscriberInitExt}; #[tokio::main] async fn main() { + let filter = Targets::from_str(std::env::var("RUST_LOG").as_deref().unwrap_or("info")) + .expect("RUST_LOG should be a valid tracing filter"); + tracing_subscriber::fmt() + .with_max_level(Level::TRACE) + .json() + .finish() + .with(filter) + .init(); let app = Router::new().route("/", get(root_get)); - axum::Server::bind(&"0.0.0.0:5000".parse().unwrap()) + let addr = "0.0.0.0:5000".parse().unwrap(); + info!("listening on {}", addr); + axum::Server::bind(&addr) .serve(app.into_make_service()) .await .unwrap();