diff -r 9d13b101beab -r 977442ccb72d pvl/syslog/parser.py --- a/pvl/syslog/parser.py Thu Jan 03 00:38:26 2013 +0200 +++ b/pvl/syslog/parser.py Thu Jan 03 00:56:28 2013 +0200 @@ -1,7 +1,3 @@ -""" - Parse syslog lines in text format. -""" - import datetime, time import re @@ -9,7 +5,7 @@ class SyslogParser (object) : """ - A source of syslog items. + Parse syslog lines in text format, as used in logfiles/fifos. """ # default syslogd format @@ -23,13 +19,12 @@ TIMESTAMP_FMT = '%b %d %H:%M:%S' - def __init__ (self, raw=False, prog=None) : + def __init__ (self, raw=False) : """ Using given underlying line source. """ self.raw = raw - self.prog = prog def parse_timestamp (self, match) : """ @@ -53,18 +48,11 @@ prog = match.group('program') - if not prog : + if prog : + return prog + else : # no tag return None - - # normalize - prog = prog.lower() - - if prog.startswith('/') : - # base - prog = prog.split('/')[-1] - - return prog def parse (self, line) : """ @@ -83,7 +71,7 @@ return dict( timestamp = datetime.datetime.now(), # XXX: None? host = None, - prog = self.prog, + prog = None, pid = None, msg = line, ) @@ -105,37 +93,6 @@ msg = match.group('text'), ) - def match_prog (self, prog) : - """ - Match given prog? - """ - - if not prog : - # never matches non-tagged lines - return False - - elif self.prog.endswith('*') : - # prefix match - return prog.startswith(self.prog[:-1]) - else : - return prog == self.prog - - - def filter (self, line, item) : - """ - Filter given item? - """ - - if not item : - log.debug("empty: %r", line) - - elif self.prog and not self.match_prog(item['prog']) : - log.debug("prog: %r", item) - - else : - # ok - return True - def process (self, lines) : """ Yield SyslogMessages from given series of lines. @@ -143,9 +100,8 @@ for line in lines : item = self.parse(line) - - # filter? - if self.filter(line, item) : + + if item : yield item __call__ = process