#fs #error #tracing #information #replace #drop-in #error-context

fs-tracing

std::fs 的直接替代品,提供有关错误的有用信息

1 个不稳定版本

0.1.0 2021年2月25日

#1320文件系统

MIT/Apache

29KB
581 行(不包括注释)

fs-tracing

fs-tracing 是 std::fs 的直接替代品,通过 tracing 提供辅助信息(如路径)以在错误中。

用法

您需要安装 tracing_error::ErrorLayer 来捕获错误上下文。例如,以下函数安装 ErrorLayer

// https://docs.rs/tracing-error/0.1.2/tracing_error/index.html
pub fn install() {
    use tracing_error::ErrorLayer;
    use tracing_subscriber::prelude::*;

    let subscriber = tracing_subscriber::Registry::default().with(ErrorLayer::default());

    tracing::subscriber::set_global_default(subscriber).unwrap();
}

更多信息,请访问 https://docs.rs/tracing-subscriber/0.2.16/tracing_subscriber/registry/index.html.

然后,您可以在代码中将 std::fs 替换为 fs_tracing,并得到漂亮的错误信息。

错误

fs-tracing 在错误时返回 std::io::Error 以保持兼容性,尽管返回的错误包含上下文信息,例如操作的类型和传递给参数的值。

例如,当您尝试打开一个不存在的文件时,fs-tracing 返回的错误信息将打印出操作名称(fs_tracing::read)和有问题的路径(/not_exist

No such file or directory (os error 2)
Trace:
   0: fs_tracing::read
           with path="/not_exist"
             at src/lib.rs:652

许可协议

许可协议为以下之一

您可选。

贡献

除非您明确声明,否则任何有意提交给作品并包含在 Apache-2.0 许可协议定义中的贡献,都将如上所述双重许可,不附加任何额外的条款或条件。

依赖项

~1.5MB
~25K SLoC