diff --git a/Cargo.lock b/Cargo.lock index 8bd729c..4edec43 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -213,6 +213,7 @@ dependencies = [ "once_cell", "reqwest", "sentry", + "sentry-tracing", "serde", "serde_json", "tempfile", diff --git a/Cargo.toml b/Cargo.toml index 70cbeda..da8e55e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ reqwest = { version = "0.12.4", features = ["json", "stream", "multipart"] } 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"] } once_cell = "1.19.0" diff --git a/src/main.rs b/src/main.rs index 261d892..2fa418a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,8 +5,10 @@ pub mod views; use dotenv::dotenv; use sentry::{integrations::debug_images::DebugImagesIntegration, types::Dsn, ClientOptions}; +use sentry_tracing::EventFilter; use std::{net::SocketAddr, str::FromStr}; use tracing::info; +use tracing_subscriber::{filter, layer::SubscriberExt, util::SubscriberInitExt}; use crate::views::get_router; @@ -14,11 +16,6 @@ use crate::views::get_router; async fn main() { dotenv().ok(); - tracing_subscriber::fmt() - .with_target(false) - .compact() - .init(); - let options = ClientOptions { dsn: Some(Dsn::from_str(&config::CONFIG.sentry_dsn).unwrap()), default_integrations: false, @@ -28,6 +25,17 @@ async fn main() { let _guard = sentry::init(options); + 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 addr = SocketAddr::from(([0, 0, 0, 0], 8080)); let app = get_router().await;