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