1 个稳定版本

1.0.0 2024 年 6 月 8 日

#326调试

MIT 许可协议

17KB
223

报告

MIT licensed Latest version Documentation

Report 是一个简单的日志和错误报告库。它设计为

  • 简单:几乎没有模板代码。不需要定义错误枚举或实现特性。
  • 兼容:此库将与不使用该包自定义 ResultError 类型的其他库一起工作。
  • 高效:只有在明确将要打印字符串时才会进行格式化。

示例

use report::{Result, log, report, info, bail};
use std::fs::File;
use std::io::{BufRead, BufReader};

#[report]
#[log("Running experiments")]
fn main() {
    let path = "data.txt";
    
    #[report("Running task one on {path}")]
    task_one(path).ok();

    let path = "Cargo.toml";
    #[report("Running task two on {path}")]
    task_two(path).ok();
}

fn task_one(file: &str) -> Result {
    let _file = File::open(file)?; 
    bail!("File exists, even though it should not")
}

#[report]
fn task_two(file: &str) -> Result {
    let file = File::open(file)?;
    let metadata = file.metadata()?;

    info!("File size: {}", metadata.len());
    
    for line in BufReader::new(file).lines() {
        #[report("Reading line")]
        let line = line?;

        if line.starts_with("[") {
            info!("Found section: {line}");
        }
    }

    Ok(())
}

输出

╭───────────────────────────────────────────────────────────────────────────────────────╮
│ Running experinments                                                                  │
├─┬─────────────────────────────────────────────────────────────────────────────────────┤
│ ├── Running task one on data.txt                                                      │
│ │   ╰── error: No such file or directory (os error 2)                                 │
│ ╰── Running task two on Cargo.toml                                                    │
│     ├── info: File size: 552                                                          │
│     ├── info: Found section: [package]                                                │
│     ├── info: Found section: [workspace]                                              │
│     ├── info: Found section: [dependencies]                                           │
│     ╰── info: Found section: [features]                                               │
╰───────────────────────────────────────────────────────────────────────────────────────╯

功能标志

标志 描述
unicode 使用 Unicode 箱形字符。
color 使用颜色表示日志级别。
frame 在每份报告周围绘制框架

依赖项

~0.7–8MB
~55K SLoC