//! Logger 库主程序入口
//!
//! 演示如何使用 logger 库的所有功能

#[macro_use]
extern crate panda_logger;

#[allow(unused_imports)]
use panda_logger::{GlobalTimer, LogLevel, Logger, PathDisplay, Timer, format_duration, LogOutput};
fn main() {
    GlobalTimer::get_instance();

    println!("=== Logger 单例模式 + 链式配置 ===");
    Logger::get_instance()
        .init()

        .set_level(LogLevel::Trace)
        .set_path_display(PathDisplay::Full)
        .set_output(LogOutput::Both)
        .set_file_path("logger_test.log")
        .set_date_format("%Y-%m-%d %H:%M:%S.%3f");

    log_trace!("这是 TRACE 级别的日志");
    log_debug!("这是 DEBUG 级别的日志");
    log_info!("这是 INFO 级别的日志");
    log_warn!("这是 WARN 级别的日志");
    log_error!("这是 ERROR 级别的日志");
    log_fatal!("这是 FATAL 级别的日志");
    log_custom!("这是自定义青色消息");

    println!("\n=== 多线程日志 ===");
    Logger::get_instance()
        .set_output(LogOutput::Console)
        .set_level(LogLevel::Debug);

    let handles: Vec<_> = (0..3)
        .map(|i| {
            std::thread::Builder::new()
                .name(format!("worker-{}", i))
                .spawn(move || {
                    log_info!("线程 {} 的日志", i);
                })
                .unwrap()
        })
        .collect();
    for handle in handles {
        handle.join().unwrap();
    }

    println!("\n=== 计时器功能 ===");
    println!("程序已运行: {}", GlobalTimer::elapsed_format());
    println!("程序已运行: {:.3} 秒", GlobalTimer::elapsed_secs());

    log_info!("演示完成！总运行时间: {}", GlobalTimer::elapsed_format());
}
