solverforge_console/
lib.rs1mod banner;
13mod format;
14mod layer;
15mod time;
16mod visitor;
17
18pub use layer::SolverConsoleLayer;
19
20use std::sync::OnceLock;
21use tracing_subscriber::layer::SubscriberExt;
22use tracing_subscriber::util::SubscriberInitExt;
23use tracing_subscriber::EnvFilter;
24
25static INIT: OnceLock<()> = OnceLock::new();
26
27pub fn init() {
32 INIT.get_or_init(|| {
33 banner::print_banner();
34
35 #[cfg(feature = "verbose-logging")]
36 let solver_level = "solverforge_solver=debug";
37 #[cfg(not(feature = "verbose-logging"))]
38 let solver_level = "solverforge_solver=info";
39
40 let filter = EnvFilter::builder()
41 .with_default_directive(solver_level.parse().unwrap())
42 .from_env_lossy()
43 .add_directive(solver_level.parse().unwrap())
44 .add_directive("solverforge_dynamic=info".parse().unwrap());
45
46 let _ = tracing_subscriber::registry()
47 .with(filter)
48 .with(SolverConsoleLayer)
49 .try_init();
50 });
51}