From 55be046f9064aabf7126fadf8b54f59279224b67 Mon Sep 17 00:00:00 2001 From: martin Date: Sun, 15 Dec 2024 21:42:41 +0100 Subject: [PATCH] added logging to Config --- config.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/config.py b/config.py index f6cf686..3879639 100644 --- a/config.py +++ b/config.py @@ -1,7 +1,8 @@ import logging +from logger import getLogger from pathlib import Path from lxml import etree -from functools import cached_property +from functools import cached_property, lru_cache from arguments import ArgumentsParser from typing import NamedTuple, Optional @@ -10,6 +11,9 @@ class TriggerTuple(NamedTuple): name: str interval_in_seconds: int governor: str + + def __repr__(self): + return f"{self.name}, interval: {self.interval_in_seconds}, governor: {self.governor}" class Config: @@ -36,9 +40,15 @@ class Config: ) return value + @cached_property + def log(self) -> logging.Logger: + return getLogger(self.__class__.__name__, loglevel=self.loglevel.upper()) + @cached_property def testmode(self) -> bool: value = self.app_root.xpath('testMode').pop().text.lower() + if value is None: + self.log.warning("testMode not set in config") if value not in ['true', 'false']: raise ValueError("testMode can only be 'true' or 'false") return True if value == 'true' else False @@ -51,16 +61,21 @@ class Config: name = trigger.xpath('name').pop().text interval_in_seconds = trigger.xpath('intervalInSeconds').pop().text governor = trigger.xpath('governor').pop().text - ret_val.append( - TriggerTuple( + _new_trigger = TriggerTuple( name=name, interval_in_seconds=int(interval_in_seconds), governor=governor - ) ) + ret_val.append(_new_trigger) + self.log.info("Loaded trigger: %s", _new_trigger) return ret_val + @lru_cache(maxsize=99) def get_trigger_by_name(self, name: str) -> Optional[TriggerTuple]: + self.log.debug("getting trigger: %s", name) _all_trigger_tuples = self.triggertuples.copy() - return next((t for t in _all_trigger_tuples if t.name == name), None) + ret_val = next((t for t in _all_trigger_tuples if t.name == name), None) + if ret_val is None: + self.log.error("trigger not found: %s", ret_val) + return ret_val