File size: 1,396 Bytes
e1a2a92 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | import logging
from tqdm import tqdm
class TqdmLoggingHandler(logging.Handler):
def emit(self, record):
try:
msg = self.format(record)
tqdm.write(msg)
self.flush()
except Exception:
self.handleError(record)
class Logger:
def __init__(self, name, level=logging.DEBUG):
self.logger = logging.getLogger(name)
self.logger.setLevel(level)
self.formatter = logging.Formatter("%(name)s - %(levelname)s - %(message)s")
# Remove existing handlers to prevent duplicate logs
if self.logger.hasHandlers():
self.logger.handlers.clear()
# FileHandler for logging to a file
file_handler = logging.FileHandler("logs.txt", mode="w")
file_handler.setFormatter(self.formatter)
self.logger.addHandler(file_handler)
# Custom TqdmLoggingHandler for console output
stream_handler = TqdmLoggingHandler()
stream_handler.setFormatter(self.formatter)
self.logger.addHandler(stream_handler)
def debug(self, message):
self.logger.debug(message)
def info(self, message):
self.logger.info(message)
def warning(self, message):
self.logger.warning(message)
def error(self, message):
self.logger.error(message)
def critical(self, message):
self.logger.critical(message)
|