logid_core/logging/
intermediary_event.rs1use evident::event::{entry::EventEntry, origin::Origin};
2
3use crate::log_id::LogId;
4
5use super::{
6 event_entry::{AddonKind, LogEventEntry},
7 msg::LogMsg,
8 LOGGER,
9};
10
11#[derive(Default, Clone, PartialEq, Eq)]
13pub struct IntermediaryLogEvent {
14 pub(crate) entry: LogEventEntry,
16}
17
18impl evident::event::intermediary::IntermediaryEvent<LogId, LogMsg, LogEventEntry>
19 for IntermediaryLogEvent
20{
21 fn new(event_id: LogId, msg: Option<impl Into<LogMsg>>, origin: Origin) -> Self {
22 IntermediaryLogEvent {
23 entry: LogEventEntry::new(event_id, msg, origin),
24 }
25 }
26
27 fn get_entry(&self) -> &LogEventEntry {
28 &self.entry
29 }
30
31 fn take_entry(&mut self) -> LogEventEntry {
32 std::mem::take(&mut self.entry)
33 }
34}
35
36impl std::fmt::Debug for IntermediaryLogEvent {
37 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
38 f.debug_struct("LogId-IntermEvent")
39 .field("event_id", &self.entry.event_id)
40 .field("entry_id", &self.entry.entry_id)
41 .field("origin", &self.entry.origin)
42 .finish()
43 }
44}
45
46impl IntermediaryLogEvent {
47 pub fn get_event_id(&self) -> LogId {
49 self.entry.event_id
50 }
51
52 pub fn get_entry(&self) -> &LogEventEntry {
54 &self.entry
55 }
56
57 pub fn add_addon(mut self, kind: AddonKind) -> Self {
58 if let Some(filter) = LOGGER.get_filter() {
59 if !filter.allow_addon(self.get_event_id(), &self.entry.origin, &kind) {
60 return self;
61 }
62 }
63
64 match kind {
65 AddonKind::Info(msg) => self.entry.infos.push(msg),
66 AddonKind::Debug(msg) => self.entry.debugs.push(msg),
67 AddonKind::Trace(msg) => self.entry.traces.push(msg),
68 AddonKind::Related(finalized_event) => self.entry.related.push(finalized_event),
69
70 #[cfg(feature = "fmt")]
71 AddonKind::FmtInfo(fmt_msg) => self.entry.fmt_infos.push(fmt_msg),
72 #[cfg(feature = "fmt")]
73 AddonKind::FmtDebug(fmt_msg) => self.entry.fmt_debugs.push(fmt_msg),
74 #[cfg(feature = "fmt")]
75 AddonKind::FmtTrace(fmt_msg) => self.entry.fmt_traces.push(fmt_msg),
76
77 #[cfg(feature = "hint_note")]
78 AddonKind::Hint(msg) => self.entry.hints.push(msg),
79 #[cfg(all(feature = "hint_note", feature = "fmt"))]
80 AddonKind::FmtHint(fmt_msg) => self.entry.fmt_hints.push(fmt_msg),
81 #[cfg(feature = "hint_note")]
82 AddonKind::Note(msg) => self.entry.notes.push(msg),
83 #[cfg(all(feature = "hint_note", feature = "fmt"))]
84 AddonKind::FmtNote(fmt_msg) => self.entry.fmt_notes.push(fmt_msg),
85
86 #[cfg(feature = "diagnostics")]
87 AddonKind::Diagnostic(diag) => self.entry.diagnostics.push(diag),
88 #[cfg(all(feature = "diagnostics", feature = "fmt"))]
89 AddonKind::FmtDiagnostic(fmt_diag) => self.entry.fmt_diagnostics.push(fmt_diag),
90
91 #[cfg(feature = "payloads")]
92 AddonKind::Payload(payload) => self.entry.payloads.push(payload),
93 #[cfg(all(feature = "payloads", feature = "fmt"))]
94 AddonKind::FmtPayload(fmt_payload) => self.entry.fmt_payloads.push(fmt_payload),
95 }
96 self
97 }
98}