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 internal_log_rate_limit = true,
24 );
25
26 counter!(
27 "component_errors_total",
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 internal_log_rate_limit = true,
44 );
45 }
46 }
47}