use std::env;
use tracing::subscriber::set_global_default;
use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer};
use tracing_log::LogTracer;
use tracing_subscriber::{EnvFilter, Registry, fmt::MakeWriter, layer::SubscriberExt};
pub fn init_tracing<Sink>(name: &str, sink: Sink)
where
Sink: for<'a> MakeWriter<'a> + Send + Sync + 'static,
{
let _ = LogTracer::init();
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| {
let filter_level =
env::var("RUST_LOG").unwrap_or_else(|_| format!("{}=info,actix_web=info", name));
EnvFilter::new(filter_level)
});
let formatting_layer = BunyanFormattingLayer::new(name.into(), sink);
let subscriber = Registry::default()
.with(env_filter)
.with(JsonStorageLayer)
.with(formatting_layer);
set_global_default(subscriber).expect("Failed to set tracing subscriber");
tracing::info!("Tracing initialized with Bunyan formatter");
}
pub fn init_console_tracing() {
let _ = LogTracer::init();
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| {
let filter_level =
env::var("RUST_LOG").unwrap_or_else(|_| "runegate=debug,actix_web=info".into());
EnvFilter::new(filter_level)
});
let subscriber = tracing_subscriber::fmt()
.with_target(true)
.with_level(true)
.with_env_filter(env_filter)
.finish();
set_global_default(subscriber).expect("Failed to set tracing subscriber");
tracing::info!("Console tracing initialized");
}