use std::sync::Once;
use tracing::Level;
use tracing_appender::rolling::{RollingFileAppender, Rotation};
use tracing_subscriber::fmt::format::FmtSpan;
use tracing_subscriber::{EnvFilter, FmtSubscriber};
pub mod actors;
pub mod messages;
static INIT: Once = Once::new();
pub fn initialize_tracing() {
INIT.call_once(|| {
std::fs::create_dir_all("logs").expect("could not create logs dir");
let file_appender = RollingFileAppender::new(Rotation::NEVER, "logs", "actor_tests.txt");
let (non_blocking, guard) = tracing_appender::non_blocking(file_appender);
Box::leak(Box::new(guard));
let filter = EnvFilter::new("trace")
.add_directive(
"acton_reactive::actor::managed_actor::started[wake]=trace"
.parse()
.unwrap(),
)
.add_directive(
"acton_reactive::actor::managed_actor::started=trace"
.parse()
.unwrap(),
)
.add_directive("acton_reactive::common::actor_ref=trace".parse().unwrap())
.add_directive(
"acton_reactive::message::outbound_envelope=trace"
.parse()
.unwrap(),
)
.add_directive(
"acton_reactive::message::message_envelope=trace"
.parse()
.unwrap(),
)
.add_directive("broker_tests=trace".parse().unwrap())
.add_directive("actor_tests=trace".parse().unwrap())
.add_directive("tokio=trace".parse().unwrap())
.add_directive(tracing_subscriber::filter::LevelFilter::TRACE.into());
let subscriber = FmtSubscriber::builder()
.with_span_events(FmtSpan::NONE)
.with_max_level(Level::TRACE)
.compact()
.with_line_number(true)
.without_time()
.with_target(true)
.with_env_filter(filter)
.with_writer(non_blocking)
.finish();
tracing::subscriber::set_global_default(subscriber)
.expect("setting default subscriber failed");
});
}