@@ -30,142 +30,114 @@ const std::string ProcessorFilterNative::sName = "processor_filter_regex_native"
30
30
bool ProcessorFilterNative::Init (const Json::Value& config) {
31
31
std::string errorMsg;
32
32
33
- // FilterKey + FilterRegex
34
- std::vector<std::string> filterKeys, filterRegs;
35
- if (!GetOptionalListParam (config, " FilterKey" , filterKeys, errorMsg)
36
- || !GetOptionalListParam (config, " FilterRegex" , filterRegs, errorMsg)) {
37
- PARAM_WARNING_IGNORE (mContext ->GetLogger (),
38
- mContext ->GetAlarm (),
39
- errorMsg,
40
- sName ,
41
- mContext ->GetConfigName (),
42
- mContext ->GetProjectName (),
43
- mContext ->GetLogstoreName (),
44
- mContext ->GetRegion ());
45
- } else if (filterKeys.size () != filterRegs.size ()) {
46
- PARAM_WARNING_IGNORE (mContext ->GetLogger (),
47
- mContext ->GetAlarm (),
48
- " param FilterKey and FilterRegex does not have the same size" ,
49
- sName ,
50
- mContext ->GetConfigName (),
51
- mContext ->GetProjectName (),
52
- mContext ->GetLogstoreName (),
53
- mContext ->GetRegion ());
54
- } else if (!filterKeys.empty ()) {
55
- bool hasError = false ;
56
- std::vector<boost::regex> regs;
57
- for (const auto & reg : filterRegs) {
58
- if (!IsRegexValid (reg)) {
59
- PARAM_WARNING_IGNORE (mContext ->GetLogger (),
60
- mContext ->GetAlarm (),
61
- " value in list param FilterRegex is not a valid regex" ,
62
- sName ,
63
- mContext ->GetConfigName (),
64
- mContext ->GetProjectName (),
65
- mContext ->GetLogstoreName (),
66
- mContext ->GetRegion ());
67
- hasError = true ;
68
- break ;
69
- }
70
- regs.emplace_back (reg);
71
- }
72
- if (!hasError) {
73
- mFilterRule = std::make_shared<LogFilterRule>();
74
- mFilterRule ->FilterKeys = filterKeys;
75
- mFilterRule ->FilterRegs = regs;
76
- mFilterMode = Mode::RULE_MODE;
77
- }
78
- }
79
-
80
- // TODO: deprecated, remove in the future
81
- // Include
82
- if (mFilterMode == Mode::BYPASS_MODE) {
83
- if (!GetOptionalMapParam (config, " Include" , mInclude , errorMsg)) {
84
- PARAM_WARNING_IGNORE (mContext ->GetLogger (),
85
- mContext ->GetAlarm (),
86
- errorMsg,
87
- sName ,
88
- mContext ->GetConfigName (),
89
- mContext ->GetProjectName (),
90
- mContext ->GetLogstoreName (),
91
- mContext ->GetRegion ());
92
- } else if (!mInclude .empty ()) {
93
- std::vector<std::string> keys;
94
- std::vector<boost::regex> regs;
95
- bool hasError = false ;
96
- for (auto & include : mInclude ) {
97
- if (!IsRegexValid (include.second )) {
98
- PARAM_WARNING_IGNORE (mContext ->GetLogger (),
99
- mContext ->GetAlarm (),
100
- " value in map param Include is not a valid regex" ,
101
- sName ,
102
- mContext ->GetConfigName (),
103
- mContext ->GetProjectName (),
104
- mContext ->GetLogstoreName (),
105
- mContext ->GetRegion ());
106
- hasError = true ;
107
- break ;
108
- }
109
- keys.emplace_back (include.first );
110
- regs.emplace_back (boost::regex (include.second ));
111
- }
112
- if (!hasError) {
113
- mFilterRule = std::make_shared<LogFilterRule>();
114
- mFilterRule ->FilterKeys = keys;
115
- mFilterRule ->FilterRegs = regs;
116
- mFilterMode = Mode::RULE_MODE;
117
- }
118
- }
119
- }
120
-
33
+ // for backward compatibility, ConditionExp prioritize over FilterKey and FilterRegex
121
34
// ConditionExp
122
- if ( mFilterMode == Mode::BYPASS_MODE) {
123
- const char * key = " ConditionExp " ;
124
- const Json::Value* itr = config. find (key, key + strlen (key));
125
- if (itr == nullptr ) {
35
+ const char * key = " ConditionExp " ;
36
+ const Json::Value* itr = config. find (key, key + strlen (key)) ;
37
+ if (itr) {
38
+ if (! itr-> isObject () ) {
126
39
PARAM_ERROR_RETURN (mContext ->GetLogger (),
127
40
mContext ->GetAlarm (),
128
- " param ConditionExp is missing " ,
41
+ " object param ConditionExp is not of type object " ,
129
42
sName ,
130
43
mContext ->GetConfigName (),
131
44
mContext ->GetProjectName (),
132
45
mContext ->GetLogstoreName (),
133
46
mContext ->GetRegion ());
134
47
}
135
- if (!itr->isObject ()) {
48
+ BaseFilterNodePtr root = ParseExpressionFromJSON (*itr);
49
+ if (!root) {
136
50
PARAM_ERROR_RETURN (mContext ->GetLogger (),
137
51
mContext ->GetAlarm (),
138
- " object param ConditionExp is not of type object " ,
52
+ " object param ConditionExp is not valid " ,
139
53
sName ,
140
54
mContext ->GetConfigName (),
141
55
mContext ->GetProjectName (),
142
56
mContext ->GetLogstoreName (),
143
57
mContext ->GetRegion ());
144
58
}
145
- BaseFilterNodePtr root = ParseExpressionFromJSON (*itr);
146
- if (!root) {
59
+ mConditionExp .swap (root);
60
+ mFilterMode = Mode::EXPRESSION_MODE;
61
+ }
62
+
63
+ if (mFilterMode == Mode::BYPASS_MODE) {
64
+ // FilterKey + FilterRegex
65
+ std::vector<std::string> filterKeys, filterRegs;
66
+ if (!GetOptionalListParam (config, " FilterKey" , filterKeys, errorMsg)
67
+ || !GetOptionalListParam (config, " FilterRegex" , filterRegs, errorMsg)) {
147
68
PARAM_ERROR_RETURN (mContext ->GetLogger (),
148
69
mContext ->GetAlarm (),
149
- " object param ConditionExp is not valid" ,
70
+ errorMsg,
71
+ sName ,
72
+ mContext ->GetConfigName (),
73
+ mContext ->GetProjectName (),
74
+ mContext ->GetLogstoreName (),
75
+ mContext ->GetRegion ());
76
+ } else if (filterKeys.size () != filterRegs.size ()) {
77
+ PARAM_ERROR_RETURN (mContext ->GetLogger (),
78
+ mContext ->GetAlarm (),
79
+ " param FilterKey and FilterRegex does not have the same size" ,
150
80
sName ,
151
81
mContext ->GetConfigName (),
152
82
mContext ->GetProjectName (),
153
83
mContext ->GetLogstoreName (),
154
84
mContext ->GetRegion ());
85
+ } else if (!filterKeys.empty ()) {
86
+ std::vector<boost::regex> regs;
87
+ for (const auto & reg : filterRegs) {
88
+ if (!IsRegexValid (reg)) {
89
+ PARAM_ERROR_RETURN (mContext ->GetLogger (),
90
+ mContext ->GetAlarm (),
91
+ " value in list param FilterRegex is not a valid regex" ,
92
+ sName ,
93
+ mContext ->GetConfigName (),
94
+ mContext ->GetProjectName (),
95
+ mContext ->GetLogstoreName (),
96
+ mContext ->GetRegion ());
97
+ }
98
+ regs.emplace_back (reg);
99
+ }
100
+ mFilterRule = std::make_shared<LogFilterRule>();
101
+ mFilterRule ->FilterKeys = filterKeys;
102
+ mFilterRule ->FilterRegs = regs;
103
+ mFilterMode = Mode::RULE_MODE;
155
104
}
156
- mConditionExp .swap (root);
157
- mFilterMode = Mode::EXPRESSION_MODE;
158
105
}
159
106
160
107
if (mFilterMode == Mode::BYPASS_MODE) {
161
- PARAM_ERROR_RETURN (mContext ->GetLogger (),
162
- mContext ->GetAlarm (),
163
- " neither param Include nor param ConditionExp is valid" ,
164
- sName ,
165
- mContext ->GetConfigName (),
166
- mContext ->GetProjectName (),
167
- mContext ->GetLogstoreName (),
168
- mContext ->GetRegion ());
108
+ // TODO: deprecated, remove in the future
109
+ // Include
110
+ if (!GetOptionalMapParam (config, " Include" , mInclude , errorMsg)) {
111
+ PARAM_ERROR_RETURN (mContext ->GetLogger (),
112
+ mContext ->GetAlarm (),
113
+ errorMsg,
114
+ sName ,
115
+ mContext ->GetConfigName (),
116
+ mContext ->GetProjectName (),
117
+ mContext ->GetLogstoreName (),
118
+ mContext ->GetRegion ());
119
+ } else if (!mInclude .empty ()) {
120
+ std::vector<std::string> keys;
121
+ std::vector<boost::regex> regs;
122
+ for (auto & include : mInclude ) {
123
+ if (!IsRegexValid (include.second )) {
124
+ PARAM_ERROR_RETURN (mContext ->GetLogger (),
125
+ mContext ->GetAlarm (),
126
+ " value in map param Include is not a valid regex" ,
127
+ sName ,
128
+ mContext ->GetConfigName (),
129
+ mContext ->GetProjectName (),
130
+ mContext ->GetLogstoreName (),
131
+ mContext ->GetRegion ());
132
+ }
133
+ keys.emplace_back (include.first );
134
+ regs.emplace_back (boost::regex (include.second ));
135
+ }
136
+ mFilterRule = std::make_shared<LogFilterRule>();
137
+ mFilterRule ->FilterKeys = keys;
138
+ mFilterRule ->FilterRegs = regs;
139
+ mFilterMode = Mode::RULE_MODE;
140
+ }
169
141
}
170
142
171
143
// DiscardingNonUTF8
0 commit comments