From f80a434dd028afec23a3cf3358845d32d9bac0b1 Mon Sep 17 00:00:00 2001
From: Carsten Hinz <c.hinz@fz-juelich.de>
Date: Wed, 12 Jun 2024 16:09:38 +0200
Subject: [PATCH] added a auxillary class to provide the same loggers to all
 examples and scripts

Adopted two notebooks to use the new logging
used conversionOfTimestamps script for testing of auxillary class.
---
 examples/produce_data_manyStations.ipynb |  8 ++++-
 examples/produce_data_withOptional.ipynb |  8 ++++-
 tests/conversionOfTimestamps.py          | 10 ++++++
 toargridding/defaultLogging.py           | 45 ++++++++++++++++++++++++
 4 files changed, 69 insertions(+), 2 deletions(-)
 create mode 100644 toargridding/defaultLogging.py

diff --git a/examples/produce_data_manyStations.ipynb b/examples/produce_data_manyStations.ipynb
index 4a9160b..37aef98 100644
--- a/examples/produce_data_manyStations.ipynb
+++ b/examples/produce_data_manyStations.ipynb
@@ -6,6 +6,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
+    "import logging\n",
     "from datetime import datetime as dt\n",
     "from collections import namedtuple\n",
     "from pathlib import Path\n",
@@ -13,7 +14,12 @@
     "from toargridding.toar_rest_client import AnalysisServiceDownload, Connection\n",
     "from toargridding.grids import RegularGrid\n",
     "from toargridding.gridding import get_gridded_toar_data\n",
-    "from toargridding.metadata import TimeSample"
+    "from toargridding.metadata import TimeSample\n",
+    "\n",
+    "from toargridding.defaultLogging import toargridding_defaultLogging\n",
+    "\n",
+    "logger = toargridding_defaultLogging()\n",
+    "logger.addShellLogger(logging.DEBUG)"
    ]
   },
   {
diff --git a/examples/produce_data_withOptional.ipynb b/examples/produce_data_withOptional.ipynb
index c8009de..4d8203b 100644
--- a/examples/produce_data_withOptional.ipynb
+++ b/examples/produce_data_withOptional.ipynb
@@ -6,6 +6,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
+    "import logging\n",
     "from datetime import datetime as dt\n",
     "from collections import namedtuple\n",
     "from pathlib import Path\n",
@@ -13,7 +14,12 @@
     "from toargridding.toar_rest_client import AnalysisServiceDownload, Connection\n",
     "from toargridding.grids import RegularGrid\n",
     "from toargridding.gridding import get_gridded_toar_data\n",
-    "from toargridding.metadata import TimeSample"
+    "from toargridding.metadata import TimeSample\n",
+    "\n",
+    "from toargridding.defaultLogging import toargridding_defaultLogging\n",
+    "\n",
+    "logger = toargridding_defaultLogging()\n",
+    "logger.addShellLogger(logging.DEBUG)"
    ]
   },
   {
diff --git a/tests/conversionOfTimestamps.py b/tests/conversionOfTimestamps.py
index e28bfcf..3431466 100644
--- a/tests/conversionOfTimestamps.py
+++ b/tests/conversionOfTimestamps.py
@@ -1,3 +1,5 @@
+import logging
+from logging.handlers import SysLogHandler
 
 from datetime import datetime as dt
 from collections import namedtuple
@@ -8,6 +10,14 @@ from toargridding.grids import RegularGrid
 from toargridding.gridding import get_gridded_toar_data
 from toargridding.metadata import TimeSample
 
+##setting up logger
+from toargridding.defaultLogging import toargridding_defaultLogging
+logger = toargridding_defaultLogging()
+logger.addShellLogger(logging.DEBUG)
+
+
+
+## add logger to syslog
 #creation of request.
 
 Config = namedtuple("Config", ["grid", "time", "variables", "stats","moreOptions"])
diff --git a/toargridding/defaultLogging.py b/toargridding/defaultLogging.py
new file mode 100644
index 0000000..f1b4f8b
--- /dev/null
+++ b/toargridding/defaultLogging.py
@@ -0,0 +1,45 @@
+import logging
+from logging.handlers import SysLogHandler
+
+class toargridding_defaultLogging:
+    """! class to setup default loggers for toargridding
+    
+    Methods:
+    -------
+    addShellLogger:
+        adds a formatting logging to the shell. Default level is DEBUG
+    addSysLogger:
+        adds a formatted logging to the system log (on a linux system). Default level is WARNING
+    """
+    def __init__(self):
+        self.logger = logging.getLogger("toargridding")
+        self.logger.setLevel(logging.DEBUG)
+    def addShellLogger(self, level=logging.INFO):
+        """!adds a formatted logging to the shell to the "toargridding" logger.
+        The output handler can afterwards be accessed as shell_handler and its formatter as shell_formatter 
+
+        Parameters:
+        ----------
+        level:
+            set the verbosity level of the logger (default: info)
+        """
+        self.shell_handler = logging.StreamHandler()
+        self.shell_handler.setLevel(level)
+        self.shell_formatter = logging.Formatter(fmt="%(asctime)s [%(levelname)s] - %(filename)s:%(lineno)d: '%(message)s'", datefmt="%Y-%m-%d %H:%M:%S")
+        self.shell_handler.setFormatter(self.shell_formatter)
+        self.logger.addHandler(self.shell_handler)
+    def addSysLogger(self, level=logging.WARNING):
+        """!adds a formatted logging to the system log of a linux system to the "toargridding" logger.
+        The output handler can afterwards be accessed as syslog_handler and its formatter as syslog_formatter 
+        
+        Parameters:
+        ----------
+        level:
+            set the verbosity level of the logger (default: warning)
+        """
+        self.syslog_handler = SysLogHandler(facility=SysLogHandler.LOG_DAEMON, address='/dev/log')
+        self.syslog_formatter = logging.Formatter(fmt="TOARGRIDDING [%(levelname)s] - %(filename)s:%(lineno)d: '%(message)s'")
+        self.syslog_handler.setFormatter(self.syslog_formatter)
+        self.syslog_handler.setLevel(level)
+        self.logger.addHandler(self.syslog_handler)
+
-- 
GitLab