@@ -65,9 +65,19 @@ def _prepare_filters_dict(self) -> Dict:
65
65
filters_to_apply .append (log_level_filter )
66
66
parsed_filters_to_log .append (filter_name )
67
67
if "contains_pattern" in filter_name :
68
- contains_pattern_filter = self ._create_contains_pattern_filter (filter_value )
69
- filters_to_apply .append (contains_pattern_filter )
70
- parsed_filters_to_log .append (filter_name )
68
+ if isinstance (filter_value , list ):
69
+ for filter_pattern in filter_value :
70
+ contains_pattern_filter = (
71
+ self ._create_contains_pattern_filter (filter_pattern )
72
+ )
73
+ filters_to_apply .append (contains_pattern_filter )
74
+ parsed_filters_to_log .append (filter_name )
75
+ if not isinstance (filter_value , list ):
76
+ contains_pattern_filter = self ._create_contains_pattern_filter (
77
+ filter_value
78
+ )
79
+ filters_to_apply .append (contains_pattern_filter )
80
+ parsed_filters_to_log .append (filter_name )
71
81
if filters_to_apply :
72
82
filters_to_apply_dict [k ] = filters_to_apply
73
83
logging .info (f"Successfully parsed filters: { parsed_filters_to_log } " )
@@ -76,7 +86,21 @@ def _prepare_filters_dict(self) -> Dict:
76
86
def _group_filters (self ) -> Dict :
77
87
filters_dict = {}
78
88
for key , filter_name_value in self ._filters_tuples :
79
- filters_dict .setdefault (key , {}).update ({filter_name_value [0 ]: filter_name_value [1 ]})
89
+ if "|" in filter_name_value [1 ]:
90
+ filter_patterns = filter_name_value [1 ].split ("|" )
91
+ if filter_patterns :
92
+ filter_patterns = [
93
+ f"{ pattern .strip ()} " for pattern in filter_patterns
94
+ ]
95
+ filters_dict .setdefault (key , {}).update (
96
+ {filter_name_value [0 ]: filter_patterns }
97
+ )
98
+ continue
99
+
100
+ filters_dict .setdefault (key , {}).update (
101
+ {filter_name_value [0 ]: filter_name_value [1 ]}
102
+ )
103
+
80
104
return filters_dict
81
105
82
106
@staticmethod
@@ -97,7 +121,23 @@ def should_filter_out_record(self, parsed_record: Dict) -> bool:
97
121
content = parsed_record .get ("content" , "" )
98
122
99
123
log_filters = self ._get_filters (resource_id , resource_type )
100
- return not all (log_filter (severity , content ) for log_filter in log_filters )
124
+
125
+ filter_patterns = []
126
+
127
+ for log_filter in log_filters :
128
+ if 'contains_pattern' in str (log_filter ):
129
+ filter_patterns .append (log_filter )
130
+
131
+ pipe_separated_filters_result = True
132
+
133
+ if len (filter_patterns ) > 1 :
134
+ log_filters = set (log_filters ) - set (filter_patterns )
135
+ pipe_separated_filters_result = any (log_filter (severity , str (content )) for log_filter in filter_patterns )
136
+
137
+ return (not all (log_filter (severity , str (content )) for log_filter in log_filters )
138
+ or not pipe_separated_filters_result )
139
+
140
+
101
141
102
142
def _get_filters (self , resource_id , resource_type ):
103
143
filters = self .filters_dict .get (resource_id , [])
0 commit comments