#logging #slog #log

slog-unwrap

为将失败的解包日志记录到slog::Logger提供扩展特质

10个版本

0.9.2 2020年8月27日
0.9.1 2020年4月8日
0.8.0 2020年4月8日
0.1.5 2020年4月5日

657调试

Download history 6/week @ 2024-03-30

每月下载 56

Apache-2.0/MIT

25KB
277 代码行

slog-unwrap

该crate为.unwrap_or_log().expect_or_log()方法在ResultOption类型上提供了扩展,这些方法将失败的解包日志记录到slog::Logger。这在例如你有一个syslog drain或数据库drain,而你希望unwrap失败显示在那里而不是打印到stderr时非常有用。

它的API旨在与Rust的std保持一致——请参阅以下所有支持的方法。失败的解包以Critical级别进行记录。

Documentation License

用法

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

slog-unwrap = "0.9"

接下来,引入ResultExt和/或OptionExt特质,并使用新的日志方法。

use slog_unwrap::ResultExt;

let logger = slog::Logger::root(slog::Discard, slog::o!());
let not_great: Result<(), _> = Result::Err("not terrible");

// Logs the failed unwrap to `logger` and panics
not_great.unwrap_or_log(&logger);

方法

std 方法 slog-unwrap 形式 特质
Result::unwrap() Result::unwrap_or_log(&log) ResultExt
Result::expect(msg) Result::expect_or_log(&log,msg) ResultExt
Result::unwrap_err() Result::unwrap_err_or_log(&log) ResultExt
Result::expect_err(msg) Result::expect_err_or_log(&log,msg) ResultExt
Option::unwrap() Option::unwrap_or_log(&log) OptionExt
Option::expect(msg) Option::expect_or_log(&log,msg) OptionExt
Option::unwrap_none() Option::unwrap_none_or_log(&log) OptionExt
Option::expect_none(msg) Option::expect_none_or_log(&log,msg) OptionExt

†: 在 std 中不稳定
注意:启用 scope 功能会将所有方法的 &log 参数移除。

特性

  • panic-quiet:导致失败的展开会使用空消息进行 panic。
    此功能默认启用——如果您希望展开错误消息也显示在 panic 消息中,请在您的 Cargo.toml 中禁用默认功能,如下所示
    slog-unwrap= {version= "0.9",default-features= false }
  • scope:添加了对 slog-scope 的支持,它消除了在各个方法中传递 slog::Logger 的需求。

替代方案

参见 slog-unwraps,另一个具有类似特性集的 crate。

依赖

~190KB