Source code for valveexe.logger

import os
import re
import time


[docs]class Logger(): '''Tracks console output by leveraging the `con_logfile` command. Supported in most source games (except l4d2) '''
[docs] def __init__(self, logpath): ''' :param logpath: The path to the log file :type logpath: path, str ''' self.logPath = logpath self.logs = '' #: :type: (str) - all the logs accumulated so far self._bookmark = 0
[docs] def log_ingest(self): ''' Will resume reading the logs from where it last left off until the end and return all logs since :rtype: str ''' logs_since_bookmark = '' with open(self.logPath, mode='r') as f: f.seek(self._bookmark, 0) for line in f.readlines(): self.logs += line logs_since_bookmark += line self._bookmark = f.tell() return logs_since_bookmark
[docs] def log_until(self, until=None): ''' Will :any:`log_ingest()<log_ingest>` until a specified regex is found within the logs and returns the logs until that point. :param until: A regex string to match against the logs :type until: str :rtype: str ''' logs_since_until = '' # all logs since the previous log_until() with open(self.logPath, mode='r') as f: while not re.search(until, logs_since_until): time.sleep(0.5) logs_since_until += self.log_ingest() if not until: break return logs_since_until
def __del__(self): try: os.remove(self.logPath) except: pass