diff --git a/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/DefaultLogger.py b/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/DefaultLogger.py index 8edccd09c2872db93ad100aa589f18a4d10c3c51..0f90297067a519e111c105235269f2ecfb757b85 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 d425f5c76c616ea7d176bdb56ae161275de248a6..bfc396790d4a47c282d05c4f6692f7dbc6045879 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',