import logging
import sys
from logging import Logger
from logging.handlers import TimedRotatingFileHandler, RotatingFileHandler
class LoggerX(Logger):
def __init__(
self,
log_file='./log/loggerx.log',
log_format="%(asctime)s | %(levelname)s | %(filename)s:%(lineno)s | %(funcName)s | %(message)s",
*args,
**kwargs
):
self.formatter = logging.Formatter(log_format)
self.log_file = log_file
Logger.__init__(self, *args, **kwargs)
self.addHandler(self.get_console_handler())
if log_file:
self.addHandler(self.get_file_rotating_handler())
# with this pattern, it's rarely necessary to propagate the| error up to parent
self.propagate = False
def get_console_handler(self):
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(self.formatter)
return console_handler
def get_file_rotating_handler(self):
file_handler = RotatingFileHandler(self.log_file,
maxBytes=500000000, # 500MB
backupCount=10)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(self.formatter)
return file_handler
loggerx = LoggerX(name='__loggerx__')
Like this:
Like Loading...
Published