use sentry::ClientInitGuard;
pub fn init_sentry() -> Option<ClientInitGuard> {
let dsn = std::env::var("SENTRY_DSN").ok().filter(|s| !s.is_empty())?;
let environment =
std::env::var("SENTRY_ENVIRONMENT").unwrap_or_else(|_| "production".to_string());
let release = std::env::var("SENTRY_RELEASE")
.ok()
.unwrap_or_else(|| env!("CARGO_PKG_VERSION").to_string());
let traces_sample_rate = std::env::var("SENTRY_TRACES_SAMPLE_RATE")
.ok()
.and_then(|s| s.parse::<f32>().ok())
.unwrap_or(0.0);
let guard = sentry::init((
dsn,
sentry::ClientOptions {
release: Some(release.into()),
environment: Some(environment.into()),
traces_sample_rate,
attach_stacktrace: true,
..Default::default()
},
));
tracing::info!(traces_sample_rate, "Sentry initialized (server-side error capture enabled)");
Some(guard)
}