From 942d425794eb023d899a5570e27d07a87c76a44c Mon Sep 17 00:00:00 2001
From: leufen1 <l.leufen@fz-juelich.de>
Date: Tue, 22 Feb 2022 15:29:44 +0100
Subject: [PATCH] can now set stream log level with log_level_stream when
 starting a workflow, /close #364

---
 mlair/helpers/logger.py              | 4 ++++
 mlair/workflows/abstract_workflow.py | 5 +++--
 mlair/workflows/default_workflow.py  | 3 ++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/mlair/helpers/logger.py b/mlair/helpers/logger.py
index 51ecde41..d960ee6f 100644
--- a/mlair/helpers/logger.py
+++ b/mlair/helpers/logger.py
@@ -19,6 +19,10 @@ class Logger:
         # define shared logger format
         self.formatter = '%(asctime)s - %(levelname)s: %(message)s  [%(filename)s:%(funcName)s:%(lineno)s]'
 
+        # assure defaults
+        level_stream = level_stream or logging.INFO
+        level_file = level_file or logging.DEBUG
+
         # set log path
         self.log_file = self.setup_logging_path(log_path)
         # set root logger as file handler
diff --git a/mlair/workflows/abstract_workflow.py b/mlair/workflows/abstract_workflow.py
index c969aa35..adb718b7 100644
--- a/mlair/workflows/abstract_workflow.py
+++ b/mlair/workflows/abstract_workflow.py
@@ -13,9 +13,10 @@ class Workflow:
     method is sufficient. It must be taken care for inter-stage dependencies, this workflow class only handles the
     execution but not the dependencies (workflow would probably fail in this case)."""
 
-    def __init__(self, name=None):
+    def __init__(self, name=None, log_level_stream=None):
         self._registry_kwargs = {}
         self._registry = []
+        self._log_level_stream = log_level_stream
         self._name = name if name is not None else self.__class__.__name__
 
     def add(self, stage, **kwargs):
@@ -25,6 +26,6 @@ class Workflow:
 
     def run(self):
         """Run workflow embedded in a run environment and according to the stage's ordering."""
-        with RunEnvironment(name=self._name):
+        with RunEnvironment(name=self._name, log_level_stream=self._log_level_stream):
             for pos, stage in enumerate(self._registry):
                 stage(**self._registry_kwargs[pos])
diff --git a/mlair/workflows/default_workflow.py b/mlair/workflows/default_workflow.py
index 961979cb..3c75d980 100644
--- a/mlair/workflows/default_workflow.py
+++ b/mlair/workflows/default_workflow.py
@@ -36,8 +36,9 @@ class DefaultWorkflow(Workflow):
                  batch_size=None,
                  epochs=None,
                  data_handler=None,
+                 log_level_stream=None,
                  **kwargs):
-        super().__init__()
+        super().__init__(log_level_stream=log_level_stream)
 
         # extract all given kwargs arguments
         params = remove_items(inspect.getfullargspec(self.__init__).args, "self")
-- 
GitLab