mermaid_cli/utils/
logger.rs1use std::io;
2use tracing::{debug, error, info, warn};
3use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};
4
5pub fn init_logger(verbose: bool) {
7 let filter = if verbose {
10 EnvFilter::new("debug,mermaid=debug")
11 } else {
12 EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("warn,mermaid=info"))
13 };
14
15 let fmt_layer = tracing_subscriber::fmt::layer()
16 .with_writer(io::stderr) .with_target(false) .with_thread_ids(false)
19 .with_thread_names(false)
20 .with_file(false) .with_line_number(false) .compact(); tracing_subscriber::registry()
25 .with(filter)
26 .with(fmt_layer)
27 .init();
28}
29
30pub fn log_info(category: &str, message: impl std::fmt::Display) {
32 info!(category = %category, "{}", message);
33}
34
35pub fn log_warn(category: &str, message: impl std::fmt::Display) {
37 warn!(category = %category, "{}", message);
38}
39
40pub fn log_error(category: &str, message: impl std::fmt::Display) {
42 error!(category = %category, "{}", message);
43}
44
45pub fn log_debug(message: impl std::fmt::Display) {
47 debug!("{}", message);
48}
49
50pub fn log_status(message: impl std::fmt::Display) {
52 eprintln!("{}", message);
55}
56
57pub fn log_progress(step: usize, total: usize, message: impl std::fmt::Display) {
59 let progress = format!("[{}/{}]", step, total);
60 eprintln!("{} {} {}", progress, "->".to_string(), message);
61}