Skip to content

Instantly share code, notes, and snippets.

@nuzrub
Created May 11, 2021 22:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nuzrub/cf80c8eef30789af498271181823d5d8 to your computer and use it in GitHub Desktop.
Save nuzrub/cf80c8eef30789af498271181823d5d8 to your computer and use it in GitHub Desktop.
Little Python snippet to automatically mirror any console print to a backup log file
from datetime import datetime
import sys
class SubLogger(object):
def __init__(self, name, source, logger):
self.name = name
self.source = source
self.logger = logger
def write(self, message):
self.logger.log(self.name, message, self.source)
def flush(self):
self.logger.flush(self.source)
class Logger(object):
def __init__(self, file):
self.file = open(file, "w")
self.file.write(f'{datetime.now()} Starting log...\n')
def __del__(self):
self.file.write(f'{datetime.now()} Log ended!\n')
self.file.flush()
self.file.close()
def log(self, name, message, backup):
self.file.write(message)
backup.write(message)
def flush(self, backup):
self.file.flush()
backup.flush()
def mirror_console_to_file(file):
logger = Logger(file)
sys.stdout = SubLogger('stdout', sys.stdout, logger)
sys.stderr = SubLogger('stderr', sys.stderr, logger)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment