diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py
index f24125a436198c0075a7fad71c50f5e9c6aa853f..5de17af929842f135d06088561c29a3f0afee046 100755
--- a/mpsd-software-environment.py
+++ b/mpsd-software-environment.py
@@ -113,7 +113,11 @@ def set_up_logging(loglevel="warning", filename=None):
 
     # set up the main logger ("root" logger)
     logger = logging.getLogger("")
-    logger.setLevel(log_level_numeric)
+    # - "logger" logs everything
+    # - we use loglevel at handler level to write everything to file
+    # - and filter using  log_level_numeric (as the user provides) to
+    #   send logging messages to the console
+    logger.setLevel(0)
 
     # the handler determines where the logs go: stdout/file
     if rich_available:
@@ -132,11 +136,16 @@ def set_up_logging(loglevel="warning", filename=None):
 
     # here we hook everything together
     shell_handler.setFormatter(shell_formatter)
+    # use the log_level_numeric to decide how much logging is sent to shell
+    shell_handler.setLevel(log_level_numeric)
     logger.addHandler(shell_handler)
 
     # if filename provided, write log messages to that file, too.
     if filename:
         file_handler = logging.FileHandler(filename)
+        # if we have a file, we write all information in there.
+        # We could change the level, for example restrict to only DEBUG and above with
+        # file_handler.setLevel(logging.DEBUG)
         file_logging_format = "%(asctime)s %(levelname)7s %(lineno)4d  |  %(message)s"
         file_formatter = logging.Formatter(file_logging_format, datefmt="[%X]")
         file_handler.setFormatter(file_formatter)