slog-unwrap

Crates.ioslog-unwrap
lib.rsslog-unwrap
version0.9.2
sourcesrc
created_at2020-04-05 16:19:17.148643
updated_at2020-08-27 18:35:58.824462
descriptionExtension traits for logging failed unwraps to a slog::Logger.
homepage
repositoryhttps://github.com/abreis/slog-unwrap
max_upload_size
id226617
size36,004
Andre B. Reis (abreis)

documentation

https://docs.rs/slog-unwrap

README

slog-unwrap

This crate provides .unwrap_or_log() and .expect_or_log() methods on Result and Option types that log failed unwraps to a slog::Logger. This is useful when, for example, you have a syslog drain or a database drain, 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 Critical.

crates.io Documentation License

Usage

Add the following to your Cargo.toml:

slog-unwrap = "0.9"

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

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

Methods

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

†: unstable in std
Note: enabling the scope feature drops the &log argument from all methods.

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:
    slog-unwrap = { version = "0.9", default-features = false }

  • scope: adds support for slog-scope, which removes the need to pass a slog::Logger to the various methods.

Alternatives

See slog-unwraps, another crate with a similar featureset.

Commit count: 16

cargo fmt