From 75fbe50722c89c24fe8206837c3f250d8d24806e Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Wed, 5 Aug 2020 23:32:06 +0200 Subject: [PATCH] BaseUtils: added method to allow addition of a rotating file handler --- .../TheCodeLabs_BaseUtils/DefaultLogger.py | 36 +++++++++++++++++-- TheCodeLabs_BaseUtils/setup.py | 2 +- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/DefaultLogger.py b/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/DefaultLogger.py index 8edccd0..0f90297 100644 --- a/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/DefaultLogger.py +++ b/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/DefaultLogger.py @@ -1,4 +1,5 @@ import logging +import logging.handlers import sys @@ -11,7 +12,6 @@ class DefaultLogger: logLevel=logging.DEBUG, logFormat=None, dateFormat=None) -> logging.Logger: - logger = logging.getLogger(appName) if logging.getLogger(appName).hasHandlers(): logger.debug(f'Skipping initialization of logger "{appName}" as it is already configured.') @@ -20,7 +20,10 @@ class DefaultLogger: return cls.configure_logger(logger, logLevel, logFormat, dateFormat) @classmethod - def create_logger(cls, appName: str, logLevel=logging.DEBUG, logFormat=None, dateFormat=None) -> logging.Logger: + def create_logger(cls, appName: str, + logLevel=logging.DEBUG, + logFormat=None, + dateFormat=None) -> logging.Logger: logger = logging.getLogger(appName) return cls.configure_logger(logger, logLevel, logFormat, dateFormat) @@ -43,6 +46,25 @@ class DefaultLogger: errHandler.setFormatter(logFormatter) errHandler.setLevel(logging.WARNING) logger.addHandler(errHandler) + + return logger + + @classmethod + def add_rotating_file_handler(cls, logger: logging.Logger, + logFormat=None, + dateFormat=None, + fileName='log.log', + maxBytes=2097152, + backupCount=3) -> logging.Logger: + logFormatter = cls.__create_formatter(logFormat, dateFormat) + + outRotatingFileHandler = logging.handlers.RotatingFileHandler(fileName, + maxBytes=maxBytes, + backupCount=backupCount) + outRotatingFileHandler.setFormatter(logFormatter) + outRotatingFileHandler.setLevel(logging.DEBUG) + logger.addHandler(outRotatingFileHandler) + return logger @classmethod @@ -53,3 +75,13 @@ class DefaultLogger: dateFormat = cls.DEFAULT_DATE_FORMAT return logging.Formatter(fmt=logFormat, datefmt=dateFormat) + + +if __name__ == '__main__': + loggerInstance = DefaultLogger().create_logger_if_not_exists('Test') + loggerInstance = DefaultLogger.add_rotating_file_handler(loggerInstance, maxBytes=500) + + loggerInstance.debug('0815') + loggerInstance.info('0815') + loggerInstance.warning('0815') + loggerInstance.error('0815') diff --git a/TheCodeLabs_BaseUtils/setup.py b/TheCodeLabs_BaseUtils/setup.py index d425f5c..bfc3967 100644 --- a/TheCodeLabs_BaseUtils/setup.py +++ b/TheCodeLabs_BaseUtils/setup.py @@ -3,7 +3,7 @@ from setuptools import setup setup( name='TheCodeLabs-BaseUtils', packages=['TheCodeLabs_BaseUtils'], - version='1.3.1', + version='1.4.0', license='MIT', description='Useful python classes', author='TheCodeLabs', -- GitLab