☕
This commit is contained in:
parent
9e16e1786c
commit
3268cd9982
@ -56,8 +56,10 @@ class Log(object):
|
||||
# datetime.time(hour[, minute[, second[, microsecond[, tzinfo]]]])
|
||||
_time = datetime.time( int(self.values.get('hh')),
|
||||
int(self.values.get('mm')),
|
||||
int(self.values.get('ss'), 0),
|
||||
int(self.values.get('ss', 0)),
|
||||
int(self.values.get('ns', 0)) )
|
||||
self._timestamp = _time
|
||||
return _time
|
||||
|
||||
def unpack(self, force=False):
|
||||
''' unpacks this log from its data and saves values '''
|
||||
|
@ -1,5 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from logs.base import Log, L_WARNING, Stacktrace
|
||||
from .base import Log, L_WARNING, Stacktrace
|
||||
import re
|
||||
"""
|
||||
Responsible for Chat Log.
|
||||
|
@ -4,21 +4,8 @@
|
||||
|
||||
This is the most important part for dealing with actual statistics, since every action taken
|
||||
in a combat instance gets logged here.
|
||||
|
||||
|
||||
------------------------------------
|
||||
Note:
|
||||
All logs start with something like
|
||||
23:53:29.137 | LOGDATA
|
||||
|
||||
LOGDATA can be quite different depending on the logfile.
|
||||
|
||||
other forms encountered:
|
||||
23:54:00.600 WARNING|
|
||||
|
||||
combat logs:
|
||||
01:04:38.805 CMBT |
|
||||
"""
|
||||
|
||||
import re
|
||||
from .base import Log, L_CMBT, Stacktrace
|
||||
import logging
|
||||
@ -409,3 +396,20 @@ COMBAT_LOGS = [ Apply, Damage, Spawn, Spell, Reward, Participant, Rocket, Heal,
|
||||
Stacktrace,
|
||||
]
|
||||
|
||||
|
||||
"""
|
||||
|
||||
|
||||
------------------------------------
|
||||
Note:
|
||||
All logs start with something like
|
||||
23:53:29.137 | LOGDATA
|
||||
|
||||
LOGDATA can be quite different depending on the logfile.
|
||||
|
||||
other forms encountered:
|
||||
23:54:00.600 WARNING|
|
||||
|
||||
combat logs:
|
||||
01:04:38.805 CMBT |
|
||||
"""
|
@ -1,56 +1,18 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from logs.base import Log, L_WARNING, Stacktrace
|
||||
import re
|
||||
"""
|
||||
This deals with the Game.Log file
|
||||
This file records lots of junk, but is needed to establish actions taken between combat sessions,
|
||||
or retrieve more detailed information about running instances.
|
||||
It is also the typical place for a Stacktrace to happen.
|
||||
|
||||
|
||||
--------------------------------------
|
||||
Interesting Lines:
|
||||
|
||||
23:16:27.427 | Steam initialized appId 212070, userSteamID 1|1|4c5a01, userName 'G4bOrg'
|
||||
23:16:36.214 | ====== starting level: 'levels/mainmenu/mainmenu' ======
|
||||
23:16:38.822 | ====== level started: 'levels/mainmenu/mainmenu' success ======
|
||||
23:16:44.251 | ====== starting level: 'levels\mainmenu\mm_empire' ======
|
||||
23:16:46.464 | ====== level started: 'levels\mainmenu\mm_empire' success ======
|
||||
|
||||
--- Date: 2014-07-18 (Fri Jul 2014) Mitteleuropäische Sommerzeit UTC+01:00
|
||||
|
||||
23:55:55.517 | MasterServerSession: connect to dedicated server, session 6777304, at addr 159.253.138.162|35005
|
||||
23:55:55.543 | client: start connecting to 159.253.138.162|35005...
|
||||
23:55:55.683 | client: connected to 159.253.138.162|35005, setting up session...
|
||||
23:55:55.886 | client: ADD_PLAYER 0 (OregyenDuero [OWL], 00039C86) status 6 team 1 group 1178422
|
||||
23:55:55.886 | client: ADD_PLAYER 1 (R0gue, 0012768A) status 6 team 2 group 1178451
|
||||
23:55:55.886 | client: ADD_PLAYER 2 (g4borg [OWL], 0003A848) status 1 team 1 group 1178422
|
||||
23:55:55.886 | client: ADD_PLAYER 3 (WladTepes, 001210D8) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 4 (oberus [], 000FE9B2) status 6 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 5 (TheGuns58, 00121C58) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 6 (Belleraphon, 0004C744) status 2 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 7 (TopoL, 00007E1F) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 8 (unicoimbraPT, 000C4FAC) status 6 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 9 (AeroBobik [], 00082047) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 10 (Samson4321 [], 000B93AF) status 6 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 11 (nol [], 00069165) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 12 (Pudwoppa, 000334A4) status 2 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 13 (IgorMad [], 000D2AF3) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 14 (YokaI, 000F1CC9) status 6 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 15 (MrAnyKey [], 0012246C) status 6 team 2 group 1178451
|
||||
23:55:55.886 | client: ADD_PLAYER 30 ((bot)David, 00000000) status 4 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 31 ((bot)George, 00000000) status 4 team 2
|
||||
23:55:55.886 | client: server assigned id 2
|
||||
23:55:55.886 | client: got level load message 's1340_thar_aliendebris13'
|
||||
23:55:55.889 | reset d3d device
|
||||
23:55:56.487 | ReplayManager: stopping activity due to map change
|
||||
23:55:56.576 | ====== starting level: 'levels\area2\s1340_thar_aliendebris13' KingOfTheHill client ======
|
||||
|
||||
|
||||
"""
|
||||
|
||||
from .base import Log, L_WARNING, Stacktrace
|
||||
import re
|
||||
import logging
|
||||
trash_log = logging.getLogger('trash_log')
|
||||
|
||||
|
||||
class GameLog(Log):
|
||||
__slots__ = Log.__slots__
|
||||
@classmethod
|
||||
@ -90,16 +52,14 @@ class GameLog(Log):
|
||||
self.trash = False
|
||||
return True
|
||||
# unknown?
|
||||
trash_log.info('%s\t\t%s' % (self.__class__.__name__, self.values.get('log', '')))
|
||||
self.trash = True
|
||||
|
||||
def explain(self):
|
||||
''' returns a String readable by humans explaining this Log '''
|
||||
return self.values.get('log', 'Unknown Game Log')
|
||||
|
||||
class WarningLog(Log):
|
||||
# has no slots, always trash.
|
||||
trash = True
|
||||
|
||||
class WarningLog(Log):
|
||||
@classmethod
|
||||
def is_handler(cls, log):
|
||||
if log.get('logtype', None) == L_WARNING:
|
||||
@ -107,6 +67,7 @@ class WarningLog(Log):
|
||||
return False
|
||||
|
||||
def __init__(self, values=None):
|
||||
super(WarningLog, self).__init__()
|
||||
self.trash = True
|
||||
|
||||
########################################################################################################
|
||||
@ -203,10 +164,53 @@ class LevelStarted(GameLog):
|
||||
|
||||
|
||||
|
||||
GAME_LOGS = [#SteamInitialization,
|
||||
GAME_LOGS = [SteamInitialization,
|
||||
MasterServerSession,
|
||||
ClientInfo,
|
||||
StartingLevel,
|
||||
#LevelStarted,
|
||||
LevelStarted,
|
||||
Stacktrace,
|
||||
]
|
||||
]
|
||||
|
||||
"""
|
||||
|
||||
|
||||
--------------------------------------
|
||||
Interesting Lines:
|
||||
|
||||
23:16:27.427 | Steam initialized appId 212070, userSteamID 1|1|4c5a01, userName 'G4bOrg'
|
||||
23:16:36.214 | ====== starting level: 'levels/mainmenu/mainmenu' ======
|
||||
23:16:38.822 | ====== level started: 'levels/mainmenu/mainmenu' success ======
|
||||
23:16:44.251 | ====== starting level: 'levels\mainmenu\mm_empire' ======
|
||||
23:16:46.464 | ====== level started: 'levels\mainmenu\mm_empire' success ======
|
||||
|
||||
--- Date: 2014-07-18 (Fri Jul 2014) Mitteleuropäische Sommerzeit UTC+01:00
|
||||
|
||||
23:55:55.517 | MasterServerSession: connect to dedicated server, session 6777304, at addr 159.253.138.162|35005
|
||||
23:55:55.543 | client: start connecting to 159.253.138.162|35005...
|
||||
23:55:55.683 | client: connected to 159.253.138.162|35005, setting up session...
|
||||
23:55:55.886 | client: ADD_PLAYER 0 (OregyenDuero [OWL], 00039C86) status 6 team 1 group 1178422
|
||||
23:55:55.886 | client: ADD_PLAYER 1 (R0gue, 0012768A) status 6 team 2 group 1178451
|
||||
23:55:55.886 | client: ADD_PLAYER 2 (g4borg [OWL], 0003A848) status 1 team 1 group 1178422
|
||||
23:55:55.886 | client: ADD_PLAYER 3 (WladTepes, 001210D8) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 4 (oberus [], 000FE9B2) status 6 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 5 (TheGuns58, 00121C58) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 6 (Belleraphon, 0004C744) status 2 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 7 (TopoL, 00007E1F) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 8 (unicoimbraPT, 000C4FAC) status 6 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 9 (AeroBobik [], 00082047) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 10 (Samson4321 [], 000B93AF) status 6 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 11 (nol [], 00069165) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 12 (Pudwoppa, 000334A4) status 2 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 13 (IgorMad [], 000D2AF3) status 6 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 14 (YokaI, 000F1CC9) status 6 team 2
|
||||
23:55:55.886 | client: ADD_PLAYER 15 (MrAnyKey [], 0012246C) status 6 team 2 group 1178451
|
||||
23:55:55.886 | client: ADD_PLAYER 30 ((bot)David, 00000000) status 4 team 1
|
||||
23:55:55.886 | client: ADD_PLAYER 31 ((bot)George, 00000000) status 4 team 2
|
||||
23:55:55.886 | client: server assigned id 2
|
||||
23:55:55.886 | client: got level load message 's1340_thar_aliendebris13'
|
||||
23:55:55.889 | reset d3d device
|
||||
23:55:56.487 | ReplayManager: stopping activity due to map change
|
||||
23:55:56.576 | ====== starting level: 'levels\area2\s1340_thar_aliendebris13' KingOfTheHill client ======
|
||||
|
||||
"""
|
@ -32,7 +32,7 @@ class CombatLogFile(LogFile):
|
||||
return line
|
||||
|
||||
class GameLogFile(LogFile):
|
||||
''' Game Log '''
|
||||
''' Game Log '''
|
||||
def resolve(self, line):
|
||||
for klass in GAME_LOGS:
|
||||
if klass.is_handler(line):
|
||||
|
@ -21,16 +21,40 @@ if __name__ == '__main__':
|
||||
print (logf.idstr)
|
||||
logf.parse_files(['game.log', 'combat.log'])
|
||||
|
||||
if logf.combat_log:
|
||||
print(('length combat log ', len(logf.combat_log.lines)))
|
||||
if logf.game_log:
|
||||
print(('length game log ', len(logf.game_log.lines)))
|
||||
print(battle_factory(logf))
|
||||
|
||||
print ("Cleaning.")
|
||||
battles = battle_factory(logf)
|
||||
|
||||
if len(battles) < 1:
|
||||
# skip this
|
||||
continue
|
||||
|
||||
for battle in battles:
|
||||
print(battle.level)
|
||||
|
||||
combat_log_lines, game_log_lines = (0, 0)
|
||||
|
||||
if logf.combat_log:
|
||||
combat_log_lines = len(logf.combat_log.lines)
|
||||
if logf.game_log:
|
||||
game_log_lines = len(logf.game_log.lines)
|
||||
|
||||
preserved = 0
|
||||
for line in logf.game_log.lines:
|
||||
if isinstance(line, dict):
|
||||
continue
|
||||
if not line.trash:
|
||||
preserved += 1
|
||||
print("Actually %s lines should be preserved in game.log on clean..." % preserved)
|
||||
|
||||
logf.clean()
|
||||
if logf.combat_log:
|
||||
print(('length combat log ', len(logf.combat_log.lines)))
|
||||
print('combat.log: %s lines were eliminated during cleaning (%s -> %s)' % ( combat_log_lines - len(logf.combat_log.lines),
|
||||
combat_log_lines,
|
||||
len(logf.combat_log.lines),
|
||||
) )
|
||||
if logf.game_log:
|
||||
print(('length game log ', len(logf.game_log.lines)))
|
||||
print('game.log: %s lines were eliminated during cleaning (%s -> %s)' % ( game_log_lines - len(logf.game_log.lines),
|
||||
game_log_lines,
|
||||
len(logf.game_log.lines),
|
||||
) )
|
||||
|
Loading…
Reference in New Issue
Block a user