1use ferrum_types::Result;
4use std::io;
5use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};
6
7pub fn setup_logging(verbose: bool, quiet: bool) -> Result<()> {
9 let log_level = if quiet {
10 tracing::Level::ERROR
11 } else if verbose {
12 tracing::Level::DEBUG
13 } else {
14 tracing::Level::WARN
15 };
16
17 let filter = if verbose {
19 EnvFilter::new(log_level.to_string())
20 } else {
21 EnvFilter::try_from_default_env().unwrap_or_else(|_| {
22 EnvFilter::new(format!(
23 "{},ferrum_engine::metal::metal_executor=error,tokenizers=error",
24 log_level
25 ))
26 })
27 };
28
29 tracing_subscriber::registry()
30 .with(filter)
31 .with(tracing_subscriber::fmt::layer().with_writer(io::stderr))
32 .init();
33
34 Ok(())
35}