mirror of
https://codeberg.org/Toasterson/solstice-ci.git
synced 2026-04-10 13:20:41 +00:00
28 lines
947 B
Rust
28 lines
947 B
Rust
use miette::IntoDiagnostic;
|
|
use tracing_subscriber::{EnvFilter, fmt, layer::SubscriberExt, util::SubscriberInitExt};
|
|
|
|
/// Guard that keeps non-blocking writer alive and allows flushing on drop
|
|
pub struct TelemetryGuard {
|
|
// Drop to flush writer.
|
|
_guard: Option<tracing_appender::non_blocking::WorkerGuard>,
|
|
}
|
|
|
|
/// Initialize tracing. Console-only for now; OTEL can be wired later.
|
|
pub fn init_tracing(_service_name: &str) -> miette::Result<TelemetryGuard> {
|
|
let (nb_writer, guard) = tracing_appender::non_blocking(std::io::stderr());
|
|
|
|
let fmt_layer = fmt::layer()
|
|
.with_target(false)
|
|
.with_writer(nb_writer)
|
|
.with_ansi(atty::is(atty::Stream::Stderr));
|
|
|
|
let filter = EnvFilter::try_from_default_env()
|
|
.unwrap_or_else(|_| EnvFilter::new("info"));
|
|
|
|
tracing_subscriber::registry()
|
|
.with(filter)
|
|
.with(fmt_layer)
|
|
.init();
|
|
|
|
Ok(TelemetryGuard { _guard: Some(guard) })
|
|
}
|