From 38af596815be4f7668a12f9509d1ffe7e6861755 Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Mon, 6 May 2024 23:39:45 +0200 Subject: [PATCH] Fix --- Cargo.lock | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++-- Cargo.toml | 4 ++ src/main.rs | 23 ++++++++++-- 3 files changed, 127 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6fceb38..a924057 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1005,6 +1005,15 @@ version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "matchit" version = "0.7.3" @@ -1033,9 +1042,13 @@ dependencies = [ "log", "meilisearch-sdk", "sentry", + "sentry-tracing", "serde", "tokio", "tokio-postgres", + "tower-http", + "tracing", + "tracing-subscriber", ] [[package]] @@ -1144,6 +1157,16 @@ dependencies = [ "minimal-lexical", ] +[[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-conv" version = "0.1.0" @@ -1239,6 +1262,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "parking" version = "2.2.0" @@ -1453,8 +1482,17 @@ checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -1465,9 +1503,15 @@ checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.3", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.3" @@ -1801,6 +1845,15 @@ dependencies = [ "digest", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -1953,6 +2006,16 @@ dependencies = [ "syn", ] +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + [[package]] name = "time" version = "0.3.36" @@ -2095,6 +2158,23 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +dependencies = [ + "bitflags 2.5.0", + "bytes", + "http 1.1.0", + "http-body", + "http-body-util", + "pin-project-lite", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-layer" version = "0.3.2" @@ -2150,13 +2230,33 @@ dependencies = [ "tracing", ] +[[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-subscriber" version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", "tracing-core", + "tracing-log", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 84f3934..e07846a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,10 @@ edition = "2021" tokio = { version = "1.37.0", features = ["full"] } axum = "0.7.5" sentry = { version = "0.32.3", features = ["debug-images"] } +tracing = "0.1.40" +tracing-subscriber = { version = "0.3.18", features = ["env-filter"]} +sentry-tracing = "0.32.3" +tower-http = { version = "0.5.2", features = ["trace"] } lazy_static = "1.4.0" log = "0.4.21" env_logger = "0.11.3" diff --git a/src/main.rs b/src/main.rs index 8b55b22..ac06c62 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,11 @@ pub mod updater; use axum::{http::HeaderMap, routing::post, Router}; use sentry::{integrations::debug_images::DebugImagesIntegration, types::Dsn, ClientOptions}; +use sentry_tracing::EventFilter; use std::{net::SocketAddr, str::FromStr}; +use tower_http::trace::{self, TraceLayer}; +use tracing::Level; +use tracing_subscriber::{filter, layer::SubscriberExt, util::SubscriberInitExt}; async fn update(headers: HeaderMap) -> &'static str { let config_api_key = config::CONFIG.api_key.clone(); @@ -33,8 +37,6 @@ async fn update(headers: HeaderMap) -> &'static str { #[tokio::main] async fn main() { - env_logger::init(); - let options = ClientOptions { dsn: Some(Dsn::from_str(&config::CONFIG.sentry_dsn).unwrap()), default_integrations: false, @@ -44,7 +46,22 @@ async fn main() { let _guard = sentry::init(options); - let app = Router::new().route("/update", post(update)); + let sentry_layer = sentry_tracing::layer().event_filter(|md| match md.level() { + &tracing::Level::ERROR => EventFilter::Event, + _ => EventFilter::Ignore, + }); + + tracing_subscriber::registry() + .with(tracing_subscriber::fmt::layer().with_target(false)) + .with(filter::LevelFilter::INFO) + .with(sentry_layer) + .init(); + + let app = Router::new().route("/update", post(update)).layer( + TraceLayer::new_for_http() + .make_span_with(trace::DefaultMakeSpan::new().level(Level::INFO)) + .on_response(trace::DefaultOnResponse::new().level(Level::INFO)), + ); let addr = SocketAddr::from(([0, 0, 0, 0], 8080));