From 0abc01cfb65fc0246be790604074569b4bd2d8c2 Mon Sep 17 00:00:00 2001
From: su530201 <olivier.kaufmann@umons.ac.be>
Date: Sat, 8 Apr 2023 16:14:31 +0200
Subject: [PATCH] Adds a function to create default loggers

---
 hardware/hardware.py | 32 +++++---------------------------
 logging_setup.py     | 11 +++++++++++
 measure.py           | 40 ++++------------------------------------
 3 files changed, 20 insertions(+), 63 deletions(-)

diff --git a/hardware/hardware.py b/hardware/hardware.py
index 5460405c..5845d265 100644
--- a/hardware/hardware.py
+++ b/hardware/hardware.py
@@ -1,8 +1,6 @@
 from abc import ABC
 import os
-import sys
-from time import gmtime
-import logging
+from ..logging_setup import create_default_logger
 
 class ControllerAbstract(ABC):
     def __init__(self, **kwargs):
@@ -15,28 +13,8 @@ class TxAbstract(ABC):
     def __init__(self, **kwargs):
         polarity = kwargs.pop('polarity', 1)
         inj_time = kwargs.pop('inj_time', 1.)
-        self.exec_logger = kwargs.pop('exec_logger', None)
-        self.soh_logger = kwargs.pop('soh_logger', None)
-        if self.exec_logger is None:
-            self.exec_logger = logging.getLogger('exec_logger')
-            log_format = '%(asctime)-15s | exec | %(levelname)s: %(message)s'
-            exec_formatter = logging.Formatter(log_format)
-            exec_formatter.converter = gmtime
-            exec_formatter.datefmt = '%Y-%m-%d %H:%M:%S UTC'
-            exec_handler = logging.StreamHandler(sys.stdout)
-            exec_handler.setFormatter(exec_formatter)
-            self.exec_logger.addHandler(exec_handler)
-            self.exec_logger.setLevel('debug')
-        if self.soh_logger is None:
-            self.soh_logger = logging.getLogger('soh_logger')
-            log_format = '%(asctime)-15s | soh | %(levelname)s: %(message)s'
-            soh_formatter = logging.Formatter(log_format)
-            soh_formatter.converter = gmtime
-            soh_formatter.datefmt = '%Y-%m-%d %H:%M:%S UTC'
-            soh_handler = logging.StreamHandler(sys.stdout)
-            soh_handler.setFormatter(soh_formatter)
-            self.soh_logger.addHandler(soh_handler)
-            self.soh_logger.setLevel('debug')
+        self.exec_logger = kwargs.pop('exec_logger', create_default_logger('exec'))
+        self.soh_logger = kwargs.pop('soh_logger', create_default_logger('soh'))
         self._polarity = None
         self._inj_time = None
         self._dps_state = 'off'
@@ -115,8 +93,8 @@ class TxAbstract(ABC):
 
 class RxAbstract(ABC):
     def __init__(self, **kwargs):
-        self.exec_logger = kwargs.pop('exec_logger', None)
-        self.soh_logger = kwargs.pop('soh_logger', None)
+        self.exec_logger = kwargs.pop('exec_logger', create_default_logger('exec'))
+        self.soh_logger = kwargs.pop('soh_logger', create_default_logger('soh'))
         self.board_name = os.path.basename(__file__)
         self.exec_logger.debug(f'RX {self.board_name} initialization')
 
diff --git a/logging_setup.py b/logging_setup.py
index 5c2543b2..8178dd5a 100644
--- a/logging_setup.py
+++ b/logging_setup.py
@@ -8,6 +8,17 @@ from compressed_sized_timed_rotating_handler import CompressedSizedTimedRotating
 import sys
 from termcolor import colored
 
+def create_default_logger(name):
+    logger = logging.getLogger(f'{name}_logger')
+    log_format = f'%(asctime)-15s | {name} | %(levelname)s: %(message)s'
+    formatter = logging.Formatter(log_format)
+    formatter.converter = gmtime
+    formatter.datefmt = '%Y-%m-%d %H:%M:%S UTC'
+    handler = logging.StreamHandler(sys.stdout)
+    handler.setFormatter(formatter)
+    logger.addHandler(handler)
+    logger.setLevel('debug')
+    return logger
 
 def setup_loggers(mqtt=True):
     msg = ''
diff --git a/measure.py b/measure.py
index d691c2f3..2491eddb 100644
--- a/measure.py
+++ b/measure.py
@@ -1,8 +1,6 @@
 import importlib
-from time import gmtime
 import numpy as np
-import sys
-import logging
+from logging_setup import create_default_logger
 from config import OHMPI_CONFIG
 controller_module = importlib.import_module(f'{OHMPI_CONFIG["hardware"]["controller"]["model"]}')
 tx_module = importlib.import_module(f'{OHMPI_CONFIG["hardware"]["tx"]["model"]}')
@@ -18,39 +16,9 @@ voltage_min = RX_CONFIG['voltage_min']
 
 class OhmPiHardware:
     def __init__(self, **kwargs):
-        self.exec_logger = kwargs.pop('exec_logger', None)
-        self.data_logger = kwargs.pop('exec_logger', None)
-        self.soh_logger = kwargs.pop('soh_logger', None)
-        if self.exec_logger is None:
-            self.exec_logger = logging.getLogger('exec_logger')
-            log_format = '%(asctime)-15s | exec | %(levelname)s: %(message)s'
-            exec_formatter = logging.Formatter(log_format)
-            exec_formatter.converter = gmtime
-            exec_formatter.datefmt = '%Y-%m-%d %H:%M:%S UTC'
-            exec_handler = logging.StreamHandler(sys.stdout)
-            exec_handler.setFormatter(exec_formatter)
-            self.exec_logger.addHandler(exec_handler)
-            self.exec_logger.setLevel('debug')
-        if self.data_logger is None:
-            self.data_logger = logging.getLogger('data_logger')
-            log_format = '%(asctime)-15s | data | %(levelname)s: %(message)s'
-            data_formatter = logging.Formatter(log_format)
-            data_formatter.converter = gmtime
-            data_formatter.datefmt = '%Y-%m-%d %H:%M:%S UTC'
-            data_handler = logging.StreamHandler(sys.stdout)
-            data_handler.setFormatter(data_formatter)
-            self.data_logger.addHandler(data_handler)
-            self.data_logger.setLevel('debug')
-        if self.soh_logger is None:
-            self.soh_logger = logging.getLogger('soh_logger')
-            log_format = '%(asctime)-15s | soh | %(levelname)s: %(message)s'
-            soh_formatter = logging.Formatter(log_format)
-            soh_formatter.converter = gmtime
-            soh_formatter.datefmt = '%Y-%m-%d %H:%M:%S UTC'
-            soh_handler = logging.StreamHandler(sys.stdout)
-            soh_handler.setFormatter(soh_formatter)
-            self.soh_logger.addHandler(soh_handler)
-            self.soh_logger.setLevel('debug')
+        self.exec_logger = kwargs.pop('exec_logger', create_default_logger('exec'))
+        self.data_logger = kwargs.pop('exec_logger', create_default_logger('data'))
+        self.soh_logger = kwargs.pop('soh_logger', create_default_logger('soh'))
         self.controller = kwargs.pop('controller',
                                      controller_module.Controller({'exec_logger' : self.exec_logger,
                                                                    'data_logger': self.data_logger,
-- 
GitLab