import logging
class ColoredFormatter(logging.Formatter):
grey = "\x1b[38;20m"
yellow = "\x1b[33;20m"
red = "\x1b[31;20m"
bold_red = "\x1b[31;1m"
reset = "\x1b[0m"
FORMATS = {
logging.DEBUG: f"%(asctime)s - %(name)s - %(levelname)s - {grey} %(message)s {reset} (%(filename)s:%(lineno)d)",
logging.INFO: f"%(asctime)s - %(name)s - %(levelname)s - {grey} %(message)s {reset} (%(filename)s:%(lineno)d)",
logging.WARNING: f"%(asctime)s - %(name)s - %(levelname)s - {yellow} %(message)s {reset} (%(filename)s:%(lineno)d)",
logging.ERROR: f"%(asctime)s - %(name)s - %(levelname)s - {red} %(message)s {reset} (%(filename)s:%(lineno)d)",
logging.CRITICAL: f"%(asctime)s - %(name)s - %(levelname)s - {bold_red} %(message)s {reset} (%(filename)s:%(lineno)d)"
}
def format(self, record):
log_fmt = self.FORMATS.get(record.levelno)
formatter = logging.Formatter(log_fmt)
return formatter.format(record)
cf = ColoredFormatter()
msg_logger = logging.getLogger("MSG_LOG")
msg_logger.setLevel(logging.INFO)
msg_file_handler = logging.FileHandler("src/log_comms/logs/logs.txt")
msg_file_handler.setFormatter(cf)
msg_logger.addHandler(msg_file_handler)
msg_logger.addHandler(logging.StreamHandler())
Hi there, i currently have this set-up for storing logs. It stores correctly with the file handler:
2024-02-19 23:34:53,328 - MSG_LOG - INFO - [33;20m test [0m (log.py:81)
However,
for the stream handler it just prints:
test
Any reason why would be the case"?