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