| Crates.io | sentry-log |
| lib.rs | sentry-log |
| version | 0.46.1 |
| created_at | 2020-06-18 13:47:41.963027+00 |
| updated_at | 2026-01-07 08:37:52.932281+00 |
| description | Sentry integration for the log and env_logger crates. |
| homepage | https://sentry.io/welcome/ |
| repository | https://github.com/getsentry/sentry-rust |
| max_upload_size | |
| id | 255340 |
| size | 42,996 |
Adds support for automatic Breadcrumb, Event, and Log capturing from log records.
The log crate is supported in three ways:
sentry::capture_message or through integrations
(e.g. the panic integration is enabled (default) and a panic happens).By default anything at or above Info is recorded as a breadcrumb and
anything at or above Error is captured as error event.
Additionally, if the sentry crate is used with the logs feature flag, anything at or above Info
is captured as a Structured Log.
let mut log_builder = pretty_env_logger::formatted_builder();
log_builder.parse_filters("info");
let logger = sentry_log::SentryLogger::with_dest(log_builder.build());
log::set_boxed_logger(Box::new(logger)).unwrap();
log::set_max_level(log::LevelFilter::Info);
let _sentry = sentry::init(());
log::info!("Generates a breadcrumb");
log::error!("Generates an event");
Or one might also set an explicit filter, to customize how to treat log records:
use sentry_log::LogFilter;
let logger = sentry_log::SentryLogger::new().filter(|md| match md.level() {
log::Level::Error => LogFilter::Event,
_ => LogFilter::Ignore,
});
To map a log record to multiple items in Sentry, you can combine multiple log filters using the bitwise or operator:
use sentry_log::LogFilter;
let logger = sentry_log::SentryLogger::new().filter(|md| match md.level() {
log::Level::Error => LogFilter::Event,
log::Level::Warn => LogFilter::Breadcrumb | LogFilter::Log,
_ => LogFilter::Ignore,
});
If you're using a custom record mapper instead of a filter, you can return a Vec<RecordMapping>
from your mapper function to send multiple items to Sentry from a single log record:
use sentry_log::{RecordMapping, SentryLogger, event_from_record, breadcrumb_from_record};
let logger = SentryLogger::new().mapper(|record| {
match record.level() {
log::Level::Error => {
// Send both an event and a breadcrumb for errors
vec![
RecordMapping::Event(event_from_record(record)),
RecordMapping::Breadcrumb(breadcrumb_from_record(record)),
]
}
log::Level::Warn => RecordMapping::Breadcrumb(breadcrumb_from_record(record)).into(),
_ => RecordMapping::Ignore.into(),
}
});
License: MIT