author | Tero Marttila <terom@fixme.fi> |
Fri, 04 Jan 2013 23:47:31 +0200 | |
changeset 68 | bea41de5cc98 |
parent 66 | 1e3a144f25c0 |
child 76 | 60bdff4bedfb |
permissions | -rw-r--r-- |
45 | 1 |
from pvl.syslog.filter import SyslogFilter |
2 |
||
3 |
import re |
|
4 |
||
51
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
5 |
import optparse, sys |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
6 |
import configobj |
51
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
7 |
|
45 | 8 |
import logging; log = logging.getLogger('pvl.syslog.rule') |
9 |
||
51
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
10 |
def parser (parser) : |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
11 |
""" |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
12 |
Optparse option group. |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
13 |
""" |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
14 |
|
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
15 |
syslog_rules = optparse.OptionGroup(parser, "Syslog rules") |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
16 |
|
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
17 |
syslog_rules.add_option('--syslog-rules', metavar='FILE', |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
18 |
help="Load syslog rules from file") |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
19 |
|
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
20 |
return syslog_rules |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
21 |
|
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
22 |
def apply (options) : |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
23 |
""" |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
24 |
Build SyslogRules from options. |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
25 |
""" |
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
26 |
|
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
27 |
if options.syslog_rules : |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
28 |
return SyslogRule.load(open(options.syslog_rules)) |
51
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
29 |
|
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
30 |
else : |
62
c4798663e57c
pvl.syslog.rule: provide format for default rule
Tero Marttila <terom@fixme.fi>
parents:
58
diff
changeset
|
31 |
return SyslogRule('default', formats={ 'default': '{msg}' }) |
51
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
32 |
|
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
33 |
# TODO: combine SyslogRule/Rules into one heirarchial SyslogRule -type? |
45 | 34 |
class SyslogRule (object) : |
35 |
""" |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
36 |
A named SyslogFilter with sub-rules. |
45 | 37 |
""" |
51
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
38 |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
39 |
@classmethod |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
40 |
def load (cls, file) : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
41 |
""" |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
42 |
Load SyslogRule from file. |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
43 |
""" |
45 | 44 |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
45 |
config = configobj.ConfigObj(file) |
66 | 46 |
|
47 |
return cls.config_section(file.name, config) |
|
48 |
||
49 |
@classmethod |
|
50 |
def config_section (cls, name, section) : |
|
51 |
""" |
|
52 |
Recursively load Syslogrules from config section. |
|
53 |
""" |
|
54 |
||
55 |
rules = [cls.config_section(subsection, section[subsection]) for subsection in section.sections] |
|
56 |
attrs = dict((name, section[name]) for name in section.scalars) |
|
57 |
||
58 |
return cls.config(name, rules=rules, **attrs) |
|
45 | 59 |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
60 |
@classmethod |
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
61 |
def config (cls, name, format=None, program=None, pattern=None, rules=None, **filters) : |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
62 |
""" |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
63 |
Build SyslogRule from config options |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
64 |
""" |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
65 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
66 |
if pattern : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
67 |
pattern = re.compile(pattern) |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
68 |
|
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
69 |
if format : |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
70 |
format = { name: format } |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
71 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
72 |
filters = dict( |
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
73 |
(attr, re.compile(regex)) for attr, regex in filters.iteritems() |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
74 |
) |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
75 |
|
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
76 |
if program : |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
77 |
filters['prog'] = program |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
78 |
|
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
79 |
if pattern : |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
80 |
filters['msg'] = pattern |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
81 |
|
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
82 |
filter = SyslogFilter(**filters) |
66 | 83 |
|
84 |
log.debug("%s: %s %s", name, rules, filter) |
|
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
85 |
|
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
86 |
return cls(name, rules, filter, format) |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
87 |
|
66 | 88 |
def __init__ (self, name, rules=None, filter=None, formats=None) : |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
89 |
self.name = name |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
90 |
self.rules = rules or [] # sub-rules |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
91 |
self.filter = filter # SyslogFilter |
66 | 92 |
self.formats = formats or {} |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
93 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
94 |
def match (self, item) : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
95 |
""" |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
96 |
Match item against our filter, applying any matches. |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
97 |
""" |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
98 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
99 |
if self.filter : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
100 |
# filter |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
101 |
matches = self.filter.filter(item) |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
102 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
103 |
else : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
104 |
# match all |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
105 |
matches = True |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
106 |
|
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
107 |
log.debug("%s: %s", self, matches) |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
108 |
|
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
109 |
if not matches : |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
110 |
# ignore |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
111 |
return None |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
112 |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
113 |
# apply |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
114 |
item['rule'] = self |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
115 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
116 |
if matches is True : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
117 |
# no-op filter |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
118 |
pass |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
119 |
else : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
120 |
item.update(matches) |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
121 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
122 |
# XXX: copy, not mutate? |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
123 |
return item |
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
124 |
|
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
125 |
def format (self, item) : |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
126 |
""" |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
127 |
Apply output formats |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
128 |
""" |
66 | 129 |
|
130 |
out = {} |
|
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
131 |
|
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
132 |
for attr, format in self.formats.iteritems() : |
66 | 133 |
value = out[attr] = format.format(**item) |
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
134 |
log.debug("%s: %s: %s", self, attr, value) |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
135 |
|
66 | 136 |
return out |
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
137 |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
138 |
# TODO: __call__? |
45 | 139 |
def apply (self, item) : |
140 |
""" |
|
66 | 141 |
Match item against ourself, apply against any sub-rules, and return output, if hit. |
45 | 142 |
""" |
143 |
||
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
144 |
item = self.match(item) |
45 | 145 |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
146 |
if not item : |
66 | 147 |
# skip |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
148 |
return |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
149 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
150 |
# sub-rules |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
151 |
for rule in self.rules : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
152 |
try : |
66 | 153 |
out = rule.apply(item) |
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
154 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
155 |
except Exception as ex : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
156 |
log.exception("rule %s: %r", rule, item) |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
157 |
return # XXX: skip? |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
158 |
|
66 | 159 |
if out : |
160 |
# hit |
|
161 |
return out |
|
45 | 162 |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
163 |
# TODO: routing/formatting |
58
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
164 |
#if self.tag is False : |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
165 |
# # drop |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
166 |
# return False |
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
167 |
|
64885a7c6e85
pvl.syslog.rule: fixfix, implement format
Tero Marttila <terom@fixme.fi>
parents:
55
diff
changeset
|
168 |
if self.formats : |
66 | 169 |
# hit |
170 |
item.update(self.format(item)) |
|
171 |
||
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
172 |
return item |
51
96d204b146b4
pvl.syslog.rule: refactor rule-config loading
Tero Marttila <terom@fixme.fi>
parents:
48
diff
changeset
|
173 |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
174 |
def __iter__ (self, items) : |
47 | 175 |
""" |
176 |
Apply items against our rules, yielding any matches. |
|
177 |
""" |
|
178 |
||
179 |
for item in items : |
|
180 |
match = self.apply(item) |
|
181 |
||
182 |
if match : |
|
183 |
yield match |
|
55
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
184 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
185 |
def __str__ (self) : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
186 |
return self.name |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
187 |
|
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
188 |
def __repr__ (self) : |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
189 |
return 'SyslogRule({self.name}, ...)'.format(self=self) |
cbdd49b76f16
pvl.syslog.rule: refactor SyslogRule
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
190 |