Skip to main content

quickwit_example/
quickwit_example.rs

1//! Quickwit 日志发送示例
2//!
3//! 演示如何配置和使用 Quickwit 功能
4
5use std::{thread, time};
6
7use log::{error, info, warn};
8use log_full::{Builder, QuickwitConfig};
9
10fn main() -> Result<(), Box<dyn std::error::Error>> {
11    // 配置 Quickwit(带 token 认证)
12    let quickwit_config =
13        QuickwitConfig::new("http://localhost:7280".to_string(), "log_full".to_string())
14            .with_timeout(30)
15            .with_batch_size(50); // 可选的认证 token
16
17    // 使用 Builder 配置日志器,包含 Quickwit 功能
18    Builder::new()
19        .level(log::LevelFilter::Info)
20        .use_console(true)
21        .log_file("logs/quickwit_example.log".to_string())
22        .log_file_max(10 * 1024 * 1024) // 10MB
23        .quickwit(quickwit_config)
24        .builder()?;
25
26    loop {
27        // 记录一些测试日志
28        info!("这是一条信息日志,将被发送到 Quickwit");
29        warn!("这是一条警告日志,包含关键信息: user_id=12345");
30        error!("这是一条错误日志,错误代码: E001");
31
32        // 记录带有结构化数据的日志
33        info!(
34            "用户登录成功: user={}, ip={}, timestamp={}",
35            "alice",
36            "192.168.1.100",
37            std::time::SystemTime::now()
38                .duration_since(std::time::UNIX_EPOCH)
39                .unwrap()
40                .as_secs()
41        );
42
43        println!("日志已记录并发送到 Quickwit(如果配置正确)");
44        println!("请检查 Quickwit 索引 'log_full' 中的日志条目");
45
46        // 确保所有异步日志都被处理
47        log::logger().flush();
48        std::thread::sleep(std::time::Duration::from_millis(1000));
49
50        println!("所有日志处理完成");
51        thread::sleep(time::Duration::from_secs(3));
52    }
53
54    // Ok(())
55}