#logging-tracing #logging #panic #tracing #tracing-unwrap

tracing-unwrap

Extension traits for logging failed unwraps to a tracing subscriber

6 releases (1 stable)

1.0.1 Mar 12, 2024
0.10.0 Nov 4, 2022
0.9.2 Aug 27, 2020
0.0.1 Aug 9, 2020

#128 in Debugging

Download history 2089/week @ 2025-01-27 2616/week @ 2025-02-03 3125/week @ 2025-02-10 2487/week @ 2025-02-17 3007/week @ 2025-02-24 3119/week @ 2025-03-03 3192/week @ 2025-03-10 2562/week @ 2025-03-17 2603/week @ 2025-03-24 2409/week @ 2025-03-31 2270/week @ 2025-04-07 2326/week @ 2025-04-14 1856/week @ 2025-04-21 2148/week @ 2025-04-28 1902/week @ 2025-05-05 1897/week @ 2025-05-12

7,870 downloads per month
Used in 12 crates (9 directly)

Apache-2.0/MIT

21KB
193 lines

tracing-unwrap

This crate provides .unwrap_or_log() and .expect_or_log() methods on Result and Option types that log failed unwraps to a tracing::Subscriber. This is useful when, for example, you are logging to syslog or a database, and you want your unwrap failures to show up there instead of being printed to stderr.

Its API aims to mirror Rust's std — see all the supported methods below. Failed unwraps are logged at a level of ERROR.

crates.io Documentation License

Usage

Add the following to your Cargo.toml:

tracing-unwrap = "1.0"

Next, bring the ResultExt and/or OptionExt traits into scope, and make use of the new logging methods.

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();

Methods

std method tracing-unwrap form 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

†: no longer in std, see rust-lang/rust#62633

Features

  • panic-quiet: causes failed unwraps to panic with an empty message.
    This feature is enabled by default — if you'd like the unwrap error message to also show in the panic message, disable default features in your Cargo.toml as follows:
    tracing-unwrap = { version = "1.0", default-features = false }

  • log-location: calls std::panic::Location::caller() to determine the location of a failed unwrap.

Dependencies

~295–410KB