* crafting fixture update * efefays logic implementation done today: * added game.log log basics for the parser. * updated utf-8 headers.
58 lines
2.2 KiB
Python
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
|