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 |
#906 in Debugging
6,361 downloads per month
Used in 13 crates
(10 directly)
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.
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
†: 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 yourCargo.tomlas follows:
tracing-unwrap = { version = "1.0", default-features = false } -
log-location: callsstd::panic::Location::caller()to determine the location of a failed unwrap.
Dependencies
~5–7MB
~49K SLoC