blob: 7cf4415837b0a6b4d2e18de78b71eb7c774fc191 [file] [log] [blame]
#!/usr/bin/env python3
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)
try:
print(
f'{e["ts"]} {e["_HOSTNAME"]} {e["SYSLOG_IDENTIFIER"]}:'
f' {e["MESSAGE"]}'
)
except Exception:
print("Unable to parse msg: " + str(e))
continue