log-full 0.0.1

A simple, asynchronous log library
Documentation
//! Quickwit 日志发送示例
//!
//! 演示如何配置和使用 Quickwit 功能

use std::{thread, time};

use log::{error, info, warn};
use log_full::{Builder, QuickwitConfig};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 配置 Quickwit(带 token 认证)
    let quickwit_config =
        QuickwitConfig::new("http://localhost:7280".to_string(), "log_full".to_string())
            .with_timeout(30)
            .with_batch_size(50); // 可选的认证 token

    // 使用 Builder 配置日志器,包含 Quickwit 功能
    Builder::new()
        .level(log::LevelFilter::Info)
        .use_console(true)
        .log_file("logs/quickwit_example.log".to_string())
        .log_file_max(10 * 1024 * 1024) // 10MB
        .quickwit(quickwit_config)
        .builder()?;

    loop {
        // 记录一些测试日志
        info!("这是一条信息日志,将被发送到 Quickwit");
        warn!("这是一条警告日志,包含关键信息: user_id=12345");
        error!("这是一条错误日志,错误代码: E001");

        // 记录带有结构化数据的日志
        info!(
            "用户登录成功: user={}, ip={}, timestamp={}",
            "alice",
            "192.168.1.100",
            std::time::SystemTime::now()
                .duration_since(std::time::UNIX_EPOCH)
                .unwrap()
                .as_secs()
        );

        println!("日志已记录并发送到 Quickwit(如果配置正确)");
        println!("请检查 Quickwit 索引 'log_full' 中的日志条目");

        // 确保所有异步日志都被处理
        log::logger().flush();
        std::thread::sleep(std::time::Duration::from_millis(1000));

        println!("所有日志处理完成");
        thread::sleep(time::Duration::from_secs(3));
    }

    // Ok(())
}