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