Fix systemd severity filter input data

The severity filters are passed the entire json event and not just a
string. Update the systemd filter to access the message string out of
the event json dict.

Prior to this we get a type error:

  2019-08-19 17:18:48,055 Exception handling log event.
  Traceback (most recent call last):
    File "/usr/local/bin/log-gearman-worker.py", line 255, in
  _handle_event
      keep_line = f.process(out_event)
    File "/usr/local/bin/log-gearman-worker.py", line 183, in process
      m = self.SYSTEMDRE.match(msg)
  TypeError: expected string or buffer

Change-Id: I7ab56ac397133f00539d9d3374fa400363ef12d6
This commit is contained in:
Clark Boylan 2019-08-19 10:26:20 -07:00
parent 3119c0cddd
commit b9063a7e7e
1 changed files with 3 additions and 2 deletions

View File

@ -179,7 +179,8 @@ class SystemdSeverityFilter(object):
'(?P<severity>%s)?.*)' % (SYSTEMDDATE, SEVERITYFMT)
SYSTEMDRE = re.compile(SYSTEMD_LOGMATCH)
def process(self, msg):
def process(self, data):
msg = data['message']
m = self.SYSTEMDRE.match(msg)
if m:
if m.group('severity') == 'DEBUG':
@ -314,7 +315,7 @@ class LogRetriever(threading.Thread):
f.close()
elif encoding == 'deflate':
logging.debug("Decompressing deflate compressed source file.")
buf = zlib.decompress(raw_buf)
buf = zlib.decompress(raw_buf).decode('utf-8')
else:
logging.debug("Decoding raw source file.")
buf = raw_buf.decode('utf-8')