ckb_sentry_slog/
converters.rs1use sentry_core::protocol::{Breadcrumb, Event, Exception, Frame, Level, Map, Stacktrace, Value};
2use slog::{OwnedKVList, Record, KV};
3
4pub fn convert_log_level(level: slog::Level) -> Level {
6 match level {
7 slog::Level::Trace | slog::Level::Debug => Level::Debug,
8 slog::Level::Info => Level::Info,
9 slog::Level::Warning => Level::Warning,
10 slog::Level::Error | slog::Level::Critical => Level::Error,
11 }
12}
13
14fn add_kv_to_map(map: &mut Map<String, Value>, kv: &impl KV) {
16 let _ = (map, kv);
17 }
19
20pub fn breadcrumb_from_record(record: &Record, values: &OwnedKVList) -> Breadcrumb {
22 let mut data = Map::new();
23 add_kv_to_map(&mut data, &record.kv());
24 add_kv_to_map(&mut data, values);
25
26 Breadcrumb {
27 ty: "log".into(),
28 message: Some(record.msg().to_string()),
29 level: convert_log_level(record.level()),
30 data,
31 ..Default::default()
32 }
33}
34
35pub fn event_from_record(record: &Record, values: &OwnedKVList) -> Event<'static> {
37 let mut extra = Map::new();
38 add_kv_to_map(&mut extra, &record.kv());
39 add_kv_to_map(&mut extra, values);
40 Event {
41 message: Some(record.msg().to_string()),
42 level: convert_log_level(record.level()),
43 ..Default::default()
44 }
45}
46
47pub fn exception_from_record(record: &Record, values: &OwnedKVList) -> Event<'static> {
70 let mut event = event_from_record(record, values);
71 let frame = Frame {
72 function: Some(record.function().into()),
73 module: Some(record.module().into()),
74 filename: Some(record.file().into()),
75 lineno: Some(record.line().into()),
76 colno: Some(record.column().into()),
77 ..Default::default()
78 };
79 let exception = Exception {
80 ty: "slog::Record".into(),
81 stacktrace: Some(Stacktrace {
82 frames: vec![frame],
83 ..Default::default()
84 }),
85 ..Default::default()
86 };
87 event.exception = vec![exception].into();
88 event
89}