blob: 4014f8d57ef977f8b60f7c82e12265116c482354 [file] [log] [blame]
#!/usr/bin/env python
r"""
BMC FFDC will at times include the journal in json format
(journalctl -o json-pretty ). This is a quick and dirty script which
will convert that json output into the standard journalctl output
"""
import json
import re
import time
from argparse import ArgumentParser
def jpretty_to_python(buf):
entries = []
for entry in re.findall(
'^{$(.+?)^}$', buf, re.DOTALL | re.MULTILINE):
entries += [json.loads('{{{}}}'.format(entry))]
return entries
if __name__ == '__main__':
parser = ArgumentParser()
parser.add_argument(
'journalfile', metavar='FILE', help='the file to parse')
args = parser.parse_args()
with open(args.journalfile) as fd:
entries = jpretty_to_python(fd.read())
entries = sorted(entries, key=lambda k: k['__REALTIME_TIMESTAMP'])
for e in entries:
e['ts'] = time.ctime(
float(e['__REALTIME_TIMESTAMP']) / 1000000).rstrip()
try:
print ('{ts} {_HOSTNAME} {SYSLOG_IDENTIFIER}: {MESSAGE}'.format(**e))
except:
print ("Unable to parse msg: " + str(e))
continue