#logging-tracing #tracing-subscriber #logging #tracing #log

tracing-unwrap

扩展 traits,用于将失败的 unwraps 日志记录到跟踪订阅者

6 个版本 (1 个稳定版)

1.0.1 2024 年 3 月 12 日
0.10.0 2022 年 11 月 4 日
0.9.2 2020 年 8 月 27 日
0.0.1 2020 年 8 月 9 日

调试 中排名 79

Download history 1614/week @ 2024-03-14 2042/week @ 2024-03-21 1665/week @ 2024-03-28 1516/week @ 2024-04-04 1778/week @ 2024-04-11 1425/week @ 2024-04-18 1236/week @ 2024-04-25 1535/week @ 2024-05-02 1188/week @ 2024-05-09 1567/week @ 2024-05-16 1259/week @ 2024-05-23 1705/week @ 2024-05-30 1152/week @ 2024-06-06 1517/week @ 2024-06-13 1431/week @ 2024-06-20 2071/week @ 2024-06-27

每月下载量 6,419
11 Crates 中使用(8 直接使用)

Apache-2.0/MIT

21KB
193 代码行

tracing-unwrap

此 crate 为 .unwrap_or_log().expect_or_log() 方法提供了 ResultOption 类型,这些方法将失败的 unwraps 日志记录到 tracing::Subscriber。当您例如向 syslog 或数据库记录日志时,这将很有用,您希望 unwrap 失败显示在那里,而不是打印到 stderr

其 API 旨在与 Rust 的 std 相似 —— 请参阅以下所有支持的 方法。失败的 unwraps 以 ERROR 级别进行日志记录。

crates.io Documentation License

用法

将以下内容添加到您的 Cargo.toml

tracing-unwrap = "1.0"

接下来,将 ResultExt 和/或 OptionExt traits 带入作用域,并使用新日志方法。

use tracing_unwrap::ResultExt;

tracing_subscriber::fmt().init();
let not_great: Result<(), _> = Result::Err("not terrible");

// Logs the failed unwrap and panics
not_great.unwrap_or_log();

方法

std 方法 tracing-unwrap 形式 trait
Result::ok() Result::ok_or_log() ResultExt
Result::unwrap() Result::unwrap_or_log() ResultExt
Result::expect(msg) Result::expect_or_log(msg) ResultExt
Result::unwrap_err() Result::unwrap_err_or_log() ResultExt
Result::expect_err(msg) Result::expect_err_or_log(msg) ResultExt
Option::unwrap() Option::unwrap_or_log() OptionExt
Option::expect(msg) Option::expect_or_log(msg) OptionExt
Option::unwrap_none() Option::unwrap_none_or_log() OptionExt
Option::expect_none(msg) Option::expect_none_or_log(msg) OptionExt

_†: 已不再在 std 中,请参阅 rust-lang/rust#62633_

功能

  • panic-quiet:导致失败的解包抛出没有消息的恐慌。
    该功能默认启用 — 如果您希望解包错误消息也显示在恐慌消息中,请按如下方式在您的 Cargo.toml 中禁用默认功能
    tracing-unwrap= {version= "1.0",default-features= false }

  • log-location:调用 std::panic::Location::caller() 来确定失败的解包位置。

依赖关系

~420KB