equal
deleted
inserted
replaced
5 |
5 |
6 class SyslogFilter (object) : |
6 class SyslogFilter (object) : |
7 """ |
7 """ |
8 Match syslog messages fields against given patterns. |
8 Match syslog messages fields against given patterns. |
9 """ |
9 """ |
|
10 |
|
11 @classmethod |
|
12 def build (cls, **filters) : |
|
13 """ |
|
14 Match using given non-None fields. |
|
15 """ |
10 |
16 |
11 def __init__ (self, **filters) : |
17 # drop None's |
|
18 return cls(dict((attr, regex) for attr, regex in filters.iteritems() if regex is not None)) |
|
19 |
|
20 def __init__ (self, filters) : |
12 """ |
21 """ |
13 Match using given { field: regex }. |
22 Match using given { field: regex }. |
14 """ |
23 """ |
15 |
24 |
16 # drop None's |
25 self.filters = filters |
17 self.filters = dict((attr, regex) for attr, regex in filters.iteritems() if regex is not None) |
|
18 |
26 |
19 def match_glob (self, attr, glob, value=None) : |
27 def match_glob (self, attr, glob, value=None) : |
20 """ |
28 """ |
21 Match prog as glob. |
29 Match prog as glob. |
22 """ |
30 """ |
|
31 |
|
32 if not glob : |
|
33 return { attr: value } |
23 |
34 |
24 if not value : |
35 if not value : |
25 # require |
36 # require |
26 return False |
37 return False |
27 |
38 |
57 def match_regex (self, attr, regex, value=None) : |
68 def match_regex (self, attr, regex, value=None) : |
58 """ |
69 """ |
59 Match given value against given pattern. |
70 Match given value against given pattern. |
60 """ |
71 """ |
61 |
72 |
|
73 if not regex : |
|
74 return { attr: value } |
|
75 |
62 if not value : |
76 if not value : |
63 # XXX: optional = match empty string? |
77 # XXX: optional = match empty string? |
64 value = '' |
78 value = '' |
65 else : |
79 else : |
66 # normalize; XXX: unicode? |
80 # normalize; XXX: unicode? |
90 |
104 |
91 for attr in self.filters : |
105 for attr in self.filters : |
92 # filter |
106 # filter |
93 filter = self.filters[attr] |
107 filter = self.filters[attr] |
94 |
108 |
95 if not filter : |
|
96 # ignore |
|
97 continue |
|
98 |
|
99 # lookup match-func |
109 # lookup match-func |
100 match = getattr(self, 'match_{attr}'.format(attr=attr), None) |
110 match = getattr(self, 'match_{attr}'.format(attr=attr), None) |
101 |
111 |
102 if match : |
112 if match : |
103 pass |
113 pass |