Crates.io | ckb-sentry-slog |
lib.rs | ckb-sentry-slog |
version | 0.21.0 |
source | src |
created_at | 2020-12-16 05:27:47.382256 |
updated_at | 2020-12-16 05:27:47.382256 |
description | Sentry integration for the slog crate. |
homepage | |
repository | https://github.com/nervosnetwork/sentry-rust |
max_upload_size | |
id | 323492 |
size | 13,592 |
Sentry slog
Integration.
This mainly provides the SentryDrain
, which wraps another [slog::Drain
]
and can be configured to forward [slog::Record
]s to Sentry.
The SentryDrain
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.
use sentry::{init, ClientOptions};
use sentry_slog::SentryDrain;
let _sentry = sentry::init(());
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");
assert_eq!(
captured_event.breadcrumbs.as_ref()[0].message.as_deref(),
Some("recorded as breadcrumb")
);
assert_eq!(
captured_event.message.as_deref(),
Some("recorded as regular event")
);
slog::crit!(root, "recorded as exception event");
assert_eq!(captured_event.exception.len(), 1);
The Drain can also be customized with a filter
, and a mapper
:
use sentry_slog::{exception_from_record, LevelFilter, RecordMapping, SentryDrain};
let drain = SentryDrain::new(slog::Discard)
.filter(|level| match level {
slog::Level::Critical | slog::Level::Error => LevelFilter::Event,
_ => LevelFilter::Ignore,
})
.mapper(|record, kv| match record.level() {
slog::Level::Critical | slog::Level::Error => {
RecordMapping::Event(exception_from_record(record, kv))
}
_ => RecordMapping::Ignore,
});
When a mapper
is specified, a corresponding filter
should also be
provided.
License: Apache-2.0