def __init__(self, logpath): self.patches = {} self.positions = {} self.steps = 0 tpos = {} with open(logpath) as f: for value in parse(f): t = value['tag'] if t == 'add': if value['shape'] == 'circle': pos = strToFTup(value['pos']) k = value['id'] self.patches[k] = plt.Circle(pos, float(value['radius']), fc='y') ax.add_patch(self.patches[k]) self.positions[k] = [] tpos[k] = pos else: print('Unknown shape ' + value['shape']) elif t == 'update': tpos[value['id']] = strToFTup(value['pos']) elif t == 'step': for k in self.patches.keys(): self.positions[k].append(tpos[k]) self.steps = self.steps + 1 else: print('Unknown tag ' + t)
def _populate_lookup(path, lookup): with open(path, encoding="utf-8-sig") as f: reader = csv.DictReader(f) for row in reader: urn = row["urn"] kind = "person" if urn.count("pers") > 0 else "place" data = next(logfmt.parse([row.get("data", "")]), dict()) named_entity, _ = NamedEntity.objects.get_or_create( urn=urn, defaults={ "title": row["label"], "description": row["description"], "url": row["link"], "kind": kind, "data": data, }, ) lookup[named_entity.urn] = named_entity
def parse_logs(self, df): for ind in df.index: logline = Log(0, 0, 0, "NULL", 0, 0, 0, 0) message = StringIO(df["events"][ind]["message"]) for values in parse(message): for key, value in values.items(): if key == "path": logline.path = value elif key == "status": logline.status_code = value elif key == "time": # convert it to IST logline.time = value elif key == "ip": logline.ip = value elif key == "latency": logline.latency = value elif key == "headers": for ele in value[4:-1:].split("] "): if "X-Tv-Sdk-Version" in ele: logline.sdk_version = ele.replace( ":[", "").replace("]", "").replace( "X-Tv-Sdk-Version", "") elif "X-Tv-Device-Model" in ele: logline.model = ele.replace(" ", "_").replace( ":[", " ").replace("X-Tv-Device-Model", "") elif "X-Tv-Transaction" in ele: logline.transaction_id = ele.replace( ":[", " ").replace("]", "").replace( "X-Tv-Transaction", "") else: continue print(' '.join(logline.get_attributes()))
def _parse_msg(self, msg): msg = list(parse(io.StringIO(msg))) return msg[0]
import sys import pandas as pd import json from logfmt import parse from io import StringIO x = sys.stdin.readlines() x = json.dumps(x) df = pd.read_json(x) message = StringIO(df[0][0]) for ele in parse(message): for k, v in ele.items(): print(k, v) # for ele in x: # print(ele) # break # print((pd.DataFrame([x][0])))