Skip to content
Snippets Groups Projects
Commit 75fbe507 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

BaseUtils: added method to allow addition of a rotating file handler

parent fbf970e5
No related branches found
No related tags found
No related merge requests found
import logging import logging
import logging.handlers
import sys import sys
...@@ -11,7 +12,6 @@ class DefaultLogger: ...@@ -11,7 +12,6 @@ class DefaultLogger:
logLevel=logging.DEBUG, logLevel=logging.DEBUG,
logFormat=None, logFormat=None,
dateFormat=None) -> logging.Logger: dateFormat=None) -> logging.Logger:
logger = logging.getLogger(appName) logger = logging.getLogger(appName)
if logging.getLogger(appName).hasHandlers(): if logging.getLogger(appName).hasHandlers():
logger.debug(f'Skipping initialization of logger "{appName}" as it is already configured.') logger.debug(f'Skipping initialization of logger "{appName}" as it is already configured.')
...@@ -20,7 +20,10 @@ class DefaultLogger: ...@@ -20,7 +20,10 @@ class DefaultLogger:
return cls.configure_logger(logger, logLevel, logFormat, dateFormat) return cls.configure_logger(logger, logLevel, logFormat, dateFormat)
@classmethod @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) logger = logging.getLogger(appName)
return cls.configure_logger(logger, logLevel, logFormat, dateFormat) return cls.configure_logger(logger, logLevel, logFormat, dateFormat)
...@@ -43,6 +46,25 @@ class DefaultLogger: ...@@ -43,6 +46,25 @@ class DefaultLogger:
errHandler.setFormatter(logFormatter) errHandler.setFormatter(logFormatter)
errHandler.setLevel(logging.WARNING) errHandler.setLevel(logging.WARNING)
logger.addHandler(errHandler) 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 return logger
@classmethod @classmethod
...@@ -53,3 +75,13 @@ class DefaultLogger: ...@@ -53,3 +75,13 @@ class DefaultLogger:
dateFormat = cls.DEFAULT_DATE_FORMAT dateFormat = cls.DEFAULT_DATE_FORMAT
return logging.Formatter(fmt=logFormat, datefmt=dateFormat) 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')
...@@ -3,7 +3,7 @@ from setuptools import setup ...@@ -3,7 +3,7 @@ from setuptools import setup
setup( setup(
name='TheCodeLabs-BaseUtils', name='TheCodeLabs-BaseUtils',
packages=['TheCodeLabs_BaseUtils'], packages=['TheCodeLabs_BaseUtils'],
version='1.3.1', version='1.4.0',
license='MIT', license='MIT',
description='Useful python classes', description='Useful python classes',
author='TheCodeLabs', author='TheCodeLabs',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment