import logging import sys class PrintLogger: def __init__(self, level=logging.INFO): self.logger = logging.getLogger("stdout_redirect") self.level = level self.terminal = sys.__stdout__ # Save original stdout def write(self, message): message = message.strip() if message: # avoid empty lines self.logger.log(self.level, message) self.terminal.write(message + '\n') # Echo to terminal def flush(self): self.terminal.flush()