Sentry Rust SDK: sentry-slog

Sentry slog Integration.

The sentry slog integration consists of two parts, the [SlogIntegration] which configures how sentry should treat slog::Records, and the [SentryDrain], which can be used to create a slog::Logger.

NOTE: This integration currently does not process any slog::KV pairs, but support for this will be added in the future.

Examples

```rust use sentry::{init, ClientOptions}; use sentry_slog::{SentryDrain, SlogIntegration};

let integration = SlogIntegration::default(); let options = ClientOptions::default().add_integration(integration); let _sentry = sentry::init(options);

let drain = SentryDrain::new(slog::Discard); let root = slog::Logger::root(drain, slog::o!());

slog::info!(root, "recorded as breadcrumb"); slog::warn!(root, "recorded as regular event");

asserteq!( capturedevent.breadcrumbs.asref()[0].message.asderef(), Some("recorded as breadcrumb") ); asserteq!( capturedevent.message.as_deref(), Some("recorded as regular event") );

slog::crit!(root, "recorded as exception event");

asserteq!(capturedevent.exception.len(), 1); ```

The integration can also be customized with a filter, and a mapper:

```rust use sentryslog::{exceptionfrom_record, LevelFilter, RecordMapping, SlogIntegration};

let integration = SlogIntegration::default() .filter(|level| match level { slog::Level::Critical | slog::Level::Error => LevelFilter::Event, _ => LevelFilter::Ignore, }) .mapper(|record, kv| RecordMapping::Event(exceptionfromrecord(record, kv))); ```

Please not that the mapper can override any classification from the previous filter.

Resources

License: Apache-2.0