--- a/bin/pvl.verkko-syslog Fri Jan 04 21:26:39 2013 +0200
+++ b/bin/pvl.verkko-syslog Fri Jan 04 21:27:17 2013 +0200
@@ -67,7 +67,7 @@
log.info("Process syslog messages...")
- for item in syslog :
+ for item in syslog.main() :
item = rules.apply(item)
if not item :
--- a/pvl/syslog/args.py Fri Jan 04 21:26:39 2013 +0200
+++ b/pvl/syslog/args.py Fri Jan 04 21:27:17 2013 +0200
@@ -48,12 +48,12 @@
elif options.syslog_tail :
# tail file
- source = tail.TailFile(options.syslog_file)
+ source = tail.TailFile(options.syslog_file, skip=True)
poll = options.syslog_tail # select(float)
elif options.syslog_file :
# read file
- source = tail.Tail(open(options.syslog_file))
+ source = tail.Tail(open(options.syslog_file), skip=True)
poll = False # do not loop, just read up to EOF
elif optional :
@@ -77,8 +77,5 @@
prog = options.syslog_prog,
)
- # chain iterables
- syslog = filter(parser(source))
-
# polling
- return SyslogSource(syslog, source, poll)
+ return SyslogSource(source, parser, filter, poll)
--- a/pvl/syslog/syslog.py Fri Jan 04 21:26:39 2013 +0200
+++ b/pvl/syslog/syslog.py Fri Jan 04 21:27:17 2013 +0200
@@ -14,19 +14,27 @@
select():able source.
"""
- def __init__ (self, syslog, source, poll=None) :
+ def __init__ (self, source, parser, filter, poll=None) :
"""
Using given underlying line source.
- syslog - iterable
source - source to select() if poll=True
poll - polling behaviour
"""
- self.syslog = syslog
self.source = source
+ self.parser = parser
+ self.filter = filter
+
self._poll = poll
+ def syslog (self) :
+ """
+ Yield available input.
+ """
+
+ return self.filter(self.parser(self.source))
+
def poll (self, poll=None) :
"""
Poll our source for input, with given polling behaviour:
@@ -81,7 +89,7 @@
# mainloop
while True :
# pull in messages
- for item in self.syslog :
+ for item in self.syslog() :
log.debug("%s", item)
yield item
@@ -95,4 +103,3 @@
log.debug("exit")
- __iter__ = main