scon/analyze.py
Gabor Guzmics 36c8914181 done in last month:
* crafting fixture update
 * efefays logic implementation
done today:
 * added game.log log basics for the parser.
 * updated utf-8 headers.
2014-08-04 19:55:42 +02:00

58 lines
2.2 KiB
Python

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Tool to analyze Logs in general.
"""
import os, sys, logging
from logs.logfiles import LogFileResolver as LogFile
from logs import combat, game, chat
from logs.session import LogSessionCollector
from logs.game import ClientInfo
# for windows its kinda this:
settings = {'root_path': os.path.join(os.path.expanduser('~'),
'Documents',
'My Games',
'StarConflict',),
'logfiles': os.path.join(os.path.expanduser('~'),
'Documents',
'My Games',
'StarConflict',
'logs'
)}
if __name__ == '__main__':
coll = LogSessionCollector(os.path.join(os.path.expanduser('~'),
'Documents', 'My Games', 'sc'))
coll.collect_unique()
#f = open('output.txt', 'w')
rex = {}
for logf in coll.sessions:
logf.parse_files(['game.log',])
print "Combat Log %s" % logf.idstr
if logf.combat_log:
for l in logf.combat_log.lines:
if isinstance(l, dict):
#print l
pass
else:
if not l.unpack():
rex[l.__class__.__name__] = rex.get(l.__class__.__name__, 0) + 1
if not isinstance(l, combat.UserEvent):
print l.values['log']
if logf.game_log:
for l in logf.game_log.lines:
if isinstance(l, dict):
pass
else:
if l.unpack():
pass
else:
print l.values['log']
# ClientInfo introspection for ping
if isinstance(l, ClientInfo) and l.values.get('clinfo', '') == 'avgPing':
print l.values
# fix avgPing parsing!
print rex