adding logfile output

This commit is contained in:
Dominik Kuhn 2022-10-17 15:43:16 +02:00
parent 53025b8eee
commit f76b355c16
3 changed files with 32 additions and 3 deletions

View File

@ -4,7 +4,7 @@ from helpers import customLogger
def test_logging():
logger = customLogger('customLogger')
logger = customLogger('customLogger','MyApp.log')
logger.debug("debug message")
logger.info("info message")

View File

@ -1,4 +1,5 @@
import logging
from logging.handlers import RotatingFileHandler
import sys
import re
@ -17,20 +18,25 @@ class ColorCodes:
class customLogger(object):
_logger = None
def __new__(cls, name:str, level=logging.DEBUG):
def __new__(cls, name:str, log_file_name:str, level=logging.DEBUG):
if cls._logger is None:
cls._logger = logging.getLogger(name)
# Define a Logging Format
_format = _format = ColorizedArgsFormatter('%(asctime)s - %(levelname)-8s ' + name + ' %(filename)s in %(funcName)s:%(lineno)d %(message)s')
_file_format = LogfileFormatter('%(asctime)s - %(levelname)-8s ' + name + ' %(filename)s in %(funcName)s:%(lineno)d %(message)s')
# Create Console Output
_handler = logging.StreamHandler(sys.stdout)
# Create Logfile Output
_file_hanlder = RotatingFileHandler(log_file_name, maxBytes=10240000, backupCount=3 )
# Add the Format to the Handler
_handler.setFormatter(_format)
_file_hanlder.setFormatter(_file_format)
# Set Loglevel to the Desired One.
_handler.setLevel(level)
_file_hanlder.setLevel(level)
# Finally add the Handler to the Logger:
cls._logger.addHandler(_handler)
cls._logger.addHandler(_file_hanlder)
# Set the Log Level of the Logger.
cls._logger.setLevel(level)
@ -102,6 +108,29 @@ class ColorizedArgsFormatter(logging.Formatter):
record.args = orig_args
return formatted
class LogfileFormatter(logging.Formatter):
def __init__(self, fmt: str):
super().__init__()
_format = fmt
self.formatter = logging.Formatter(_format)
@staticmethod
def rewrite_record(record: logging.LogRecord):
msg = record.msg
record.msg = msg.format(*record.args)
record.args = []
def format(self, record):
orig_msg = record.msg
orig_args = record.args
self.rewrite_record(record)
formatted = self.formatter.format(record)
record.msg = orig_msg
record.args = orig_args
return formatted
class BraceFormatStyleFormatter(logging.Formatter):
def __init__(self, fmt: str):