use crate::engine::audit::state_replica::AUDIT_REPLICA_STATE_UPDATE_SPAN_NAME;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
pub fn init_logging() {
tracing_subscriber::registry()
.with(
tracing_subscriber::filter::EnvFilter::builder()
.with_default_directive(tracing_subscriber::filter::LevelFilter::INFO.into())
.from_env_lossy(),
)
.with(tracing_subscriber::fmt::layer())
.with(AuditSpanFilter)
.init()
}
pub fn init_json_logging() {
tracing_subscriber::registry()
.with(
tracing_subscriber::filter::EnvFilter::builder()
.with_default_directive(tracing_subscriber::filter::LevelFilter::INFO.into())
.from_env_lossy(),
)
.with(tracing_subscriber::fmt::layer().json().flatten_event(true))
.with(AuditSpanFilter)
.init()
}
#[derive(Debug)]
pub struct AuditSpanFilter;
impl<S> tracing_subscriber::layer::Layer<S> for AuditSpanFilter
where
S: tracing::Subscriber + for<'a> tracing_subscriber::registry::LookupSpan<'a>,
{
fn event_enabled(
&self,
_: &tracing::Event<'_>,
ctx: tracing_subscriber::layer::Context<'_, S>,
) -> bool {
if let Some(span) = ctx.lookup_current()
&& span.name() == AUDIT_REPLICA_STATE_UPDATE_SPAN_NAME
{
false
} else {
true
}
}
}