1 个稳定版本
1.0.0 | 2024 年 6 月 8 日 |
---|
#326 在 调试
17KB
223 行
报告
Report 是一个简单的日志和错误报告库。它设计为
- 简单:几乎没有模板代码。不需要定义错误枚举或实现特性。
- 兼容:此库将与不使用该包自定义
Result
或Error
类型的其他库一起工作。 - 高效:只有在明确将要打印字符串时才会进行格式化。
示例
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