vector/internal_events/
expansion.rs1use vector_lib::internal_event::{
2 ComponentEventsDropped, CounterName, InternalEvent, UNINTENTIONAL, error_stage, error_type,
3};
4use vector_lib::{NamedInternalEvent, counter};
5
6#[derive(NamedInternalEvent)]
7pub struct PairExpansionError<'a> {
8 pub key: &'a str,
9 pub value: &'a str,
10 pub drop_event: bool,
11 pub error: serde_json::Error,
12}
13
14impl InternalEvent for PairExpansionError<'_> {
15 fn emit(self) {
16 let message = format!("Failed to expand key: `{}`:`{}`", self.key, self.value);
17
18 if self.drop_event {
19 error!(
20 message = %message,
21 error = %self.error,
22 error_type = error_type::PARSER_FAILED,
23 stage = error_stage::PROCESSING,
24 );
25
26 counter!(
27 CounterName::ComponentErrorsTotal,
28 "error_type" => error_type::PARSER_FAILED,
29 "stage" => error_stage::PROCESSING,
30 )
31 .increment(1);
32
33 emit!(ComponentEventsDropped::<UNINTENTIONAL> {
34 count: 1,
35 reason: &message,
36 });
37 } else {
38 warn!(
39 message = %message,
40 error = %self.error,
41 error_type = error_type::PARSER_FAILED,
42 stage = error_stage::PROCESSING,
43 );
44 }
45 }
46}