added logging to Config

This commit is contained in:
2024-12-15 21:42:41 +01:00
parent 4522c0dd9e
commit 55be046f90
+20 -5
View File
@@ -1,7 +1,8 @@
import logging import logging
from logger import getLogger
from pathlib import Path from pathlib import Path
from lxml import etree from lxml import etree
from functools import cached_property from functools import cached_property, lru_cache
from arguments import ArgumentsParser from arguments import ArgumentsParser
from typing import NamedTuple, Optional from typing import NamedTuple, Optional
@@ -10,6 +11,9 @@ class TriggerTuple(NamedTuple):
name: str name: str
interval_in_seconds: int interval_in_seconds: int
governor: str governor: str
def __repr__(self):
return f"{self.name}, interval: {self.interval_in_seconds}, governor: {self.governor}"
class Config: class Config:
@@ -36,9 +40,15 @@ class Config:
) )
return value return value
@cached_property
def log(self) -> logging.Logger:
return getLogger(self.__class__.__name__, loglevel=self.loglevel.upper())
@cached_property @cached_property
def testmode(self) -> bool: def testmode(self) -> bool:
value = self.app_root.xpath('testMode').pop().text.lower() 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']: if value not in ['true', 'false']:
raise ValueError("testMode can only be 'true' or 'false") raise ValueError("testMode can only be 'true' or 'false")
return True if value == 'true' else False return True if value == 'true' else False
@@ -51,16 +61,21 @@ class Config:
name = trigger.xpath('name').pop().text name = trigger.xpath('name').pop().text
interval_in_seconds = trigger.xpath('intervalInSeconds').pop().text interval_in_seconds = trigger.xpath('intervalInSeconds').pop().text
governor = trigger.xpath('governor').pop().text governor = trigger.xpath('governor').pop().text
ret_val.append( _new_trigger = TriggerTuple(
TriggerTuple(
name=name, name=name,
interval_in_seconds=int(interval_in_seconds), interval_in_seconds=int(interval_in_seconds),
governor=governor governor=governor
)
) )
ret_val.append(_new_trigger)
self.log.info("Loaded trigger: %s", _new_trigger)
return ret_val return ret_val
@lru_cache(maxsize=99)
def get_trigger_by_name(self, name: str) -> Optional[TriggerTuple]: def get_trigger_by_name(self, name: str) -> Optional[TriggerTuple]:
self.log.debug("getting trigger: %s", name)
_all_trigger_tuples = self.triggertuples.copy() _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