From 1bb1cefdc5c2053822ce33a580b3fda51098658f Mon Sep 17 00:00:00 2001
From: lukas leufen <l.leufen@fz-juelich.de>
Date: Wed, 18 Mar 2020 13:26:37 +0100
Subject: [PATCH] moved logger to run environment

---
 src/helpers.py                           |  4 ++--
 src/run_modules/run_environment.py       | 10 ++++++++++
 test/test_modules/test_pre_processing.py |  1 +
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/helpers.py b/src/helpers.py
index 12ec837b..6e9d47d1 100644
--- a/src/helpers.py
+++ b/src/helpers.py
@@ -234,11 +234,11 @@ class Logger:
         self.formatter = '%(asctime)s - %(levelname)s: %(message)s  [%(filename)s:%(funcName)s:%(lineno)s]'
 
         # set log path
-        log_file = self.setup_logging_path(log_path)
+        self.log_file = self.setup_logging_path(log_path)
         # set root logger as file handler
         logging.basicConfig(level=level_file,
                             format=self.formatter,
-                            filename=log_file,
+                            filename=self.log_file,
                             filemode='a')
         # add stream handler to the root logger
         logging.getLogger('').addHandler(self.logger_console(level_stream))
diff --git a/src/run_modules/run_environment.py b/src/run_modules/run_environment.py
index 56c01729..1c44786d 100644
--- a/src/run_modules/run_environment.py
+++ b/src/run_modules/run_environment.py
@@ -2,9 +2,13 @@ __author__ = "Lukas Leufen"
 __date__ = '2019-11-25'
 
 import logging
+import os
+import shutil
 import time
 
+from src.helpers import Logger
 from src.datastore import DataStoreByScope as DataStoreObject
+from src.datastore import NameNotFoundInDataStore
 from src.helpers import TimeTracking
 
 
@@ -16,6 +20,7 @@ class RunEnvironment(object):
 
     del_by_exit = False
     data_store = DataStoreObject()
+    logger = Logger()
 
     def __init__(self):
         """
@@ -34,6 +39,11 @@ class RunEnvironment(object):
             logging.info(f"{self.__class__.__name__} finished after {self.time}")
             self.del_by_exit = True
         if self.__class__.__name__ == "RunEnvironment":
+            try:
+                new_file = os.path.join(self.data_store.get("experiment_path", "general"), "logging.log")
+                shutil.copyfile(self.logger.log_file, new_file)
+            except (NameNotFoundInDataStore, FileNotFoundError):
+                pass
             self.data_store.clear_data_store()
 
     def __enter__(self):
diff --git a/test/test_modules/test_pre_processing.py b/test/test_modules/test_pre_processing.py
index 36374101..425ddecc 100644
--- a/test/test_modules/test_pre_processing.py
+++ b/test/test_modules/test_pre_processing.py
@@ -36,6 +36,7 @@ class TestPreProcessing:
     def test_init(self, caplog):
         ExperimentSetup(parser_args={}, stations=['DEBW107', 'DEBY081', 'DEBW013', 'DEBW076', 'DEBW087'],
                         statistics_per_var={'o3': 'dma8eu', 'temp': 'maximum'})
+        caplog.clear()
         caplog.set_level(logging.INFO)
         with PreProcessing():
             assert caplog.record_tuples[0] == ('root', 20, 'PreProcessing started')
-- 
GitLab