project/log_analyzer.py

58 lines
1.4 KiB
Python

import json
import sys
from load import LOADERS
import analyzer
class LogSettings:
log_format = None
entry_type = None
spatials = None
actions = None
analyzers = []
def __init__(self, json_dict):
self.log_format = json_dict['logFormat']
self.entry_type = json_dict['entryType']
self.spatials = json_dict['spatials']
self.actions = json_dict['actions']
for mod in json_dict['analyzers']:
for name in json_dict['analyzers'][mod]:
self.analyzers.append(getattr(sys.modules[mod], name))
def __repr__(self):
return str({
"logFormat": self.log_format,
"entryType": self.entry_type,
"spatials": self.spatials,
"actions": self.actions,
"analyzers": self.analyzers
})
def load_settings(file:str) -> LogSettings:
return LogSettings(json.load(open(file)))
if __name__ == '__main__':
settings = load_settings("biogames2.json")
print(settings)
logfile = "data/inst_56d9b64144ab44e7b90bf766f3be32e3/instance_log.sqlite"
loader = LOADERS[settings.log_format]()
try:
loader.load(logfile)
except BaseException as e:
raise RuntimeError(e)
analyzers = []
for analyzer in settings.analyzers:
analyzers.append(analyzer(settings))
for entry in loader.get_entry():
for analyzer in analyzers:
if analyzer.process(entry):
break
for analyzer in analyzers:
print("* Result for " + str(type(analyzer)))
print(analyzer.result())
coords = analyzers[0].render()
with open("test.js", "w") as out:
out.write("coords = "+coords)