From b95698c9623891bdbdc1fe13a8252d17d3bc5ac8 Mon Sep 17 00:00:00 2001 From: martin Date: Fri, 7 Mar 2025 17:27:19 +0100 Subject: [PATCH] improvement logging --- cpu_governor_auto_adjust/app_class.py | 5 ++--- cpu_governor_auto_adjust/logger.py | 25 +++++++++++++++++++++-- cpu_governor_auto_adjust/triggers/roon.py | 2 +- pyproject.toml | 2 +- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/cpu_governor_auto_adjust/app_class.py b/cpu_governor_auto_adjust/app_class.py index ab39521..bbd3c4d 100644 --- a/cpu_governor_auto_adjust/app_class.py +++ b/cpu_governor_auto_adjust/app_class.py @@ -1,11 +1,10 @@ -from cpu_governor_auto_adjust.logger import getLogger +from cpu_governor_auto_adjust.logger import getLogger, LoggerFormat from cpu_governor_auto_adjust.config import Config from logging import Formatter + class AppClass: def __init__(self, _config: Config) -> None: self._config = _config self.log = getLogger(self.__class__.__name__, loglevel=_config.loglevel.upper()) - app_class_logging_format = self.log.handlers[0].formatter._fmt.replace("%(asctime)s %(levelname)-8s", f"%(asctime)s %(levelname)-8s [{self.__class__.__name__}]") - self.log.handlers[0].setFormatter(Formatter(app_class_logging_format)) self.log.info(f'initializing {self.__class__.__name__}') diff --git a/cpu_governor_auto_adjust/logger.py b/cpu_governor_auto_adjust/logger.py index 7be4759..ecb7182 100644 --- a/cpu_governor_auto_adjust/logger.py +++ b/cpu_governor_auto_adjust/logger.py @@ -2,10 +2,31 @@ import logging from logging import Logger import os import sys +from typing import NamedTuple, Optional + + +class LoggerFormat(NamedTuple): + time: str = '%(asctime)s' + level: str = '%(levelname)-8s' + message: str = '%(message)s' + filename: str = '%(filename)s' + lineno: int = '%(lineno)d' + + def _base(self, class_name: Optional[str] = None) -> str: + if class_name is not None: + return f"{self.time} {self.level} [{class_name}] {self.message} " + return f"{self.time} {self.level} {self.message}" + + def info(self, class_name: Optional[str] = None) -> str: + return f"{self._base(class_name)}" + + def debug(self, class_name: Optional[str] = None) -> str: + return f"{self._base(class_name)} ({self.filename}:{self.lineno})" def getLogger(name: str = 'root', loglevel: str = 'INFO') -> Logger: logger = logging.getLogger(name) + logger_format = LoggerFormat() # if logger 'name' already exists, return it to avoid logging duplicate # messages by attaching multiple handlers of the same type @@ -17,9 +38,9 @@ def getLogger(name: str = 'root', loglevel: str = 'INFO') -> Logger: loglevel = getattr(logging, loglevel.upper()) logger.setLevel(loglevel) if loglevel == logging.DEBUG: - fmt = '%(asctime)s %(levelname)-8s %(message)s (%(filename)s:%(lineno)d)' + fmt = logger_format.debug(class_name=name) else: - fmt = '%(asctime)s %(levelname)-8s %(message)s' + fmt = logger_format.info(class_name=name) formatter = logging.Formatter(fmt) handler = logging.StreamHandler() handler.setFormatter(formatter) diff --git a/cpu_governor_auto_adjust/triggers/roon.py b/cpu_governor_auto_adjust/triggers/roon.py index 9cb2362..2d736bb 100644 --- a/cpu_governor_auto_adjust/triggers/roon.py +++ b/cpu_governor_auto_adjust/triggers/roon.py @@ -29,7 +29,7 @@ class RoonTrigger(Trigger): self.log.debug("zone_id: %s zone_info: %s" , zone_id, zone) zone_name = zone['display_name'] zone_state = zone['state'] - zone_now_playing = zone['now_playing']['one_line']['line1'] + zone_now_playing = f"{zone['now_playing']['two_line']['line1']} - {zone['now_playing']['two_line']['line2']}" self.log.info("zone_id: %s name: %s, state: %s, now playing: %s" , zone_id, zone_name, zone_state, zone_now_playing) zones_state.append(zone_state) diff --git a/pyproject.toml b/pyproject.toml index d8c2d0b..d4a0753 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "cpu_governor_auto_adjust" -version = "0.1.26" +version = "0.1.28" description = "This application has been developed to automatically change cpu governor based on certain triggers." authors = [ { name = "Martin Reurekas", email = "martin@semrks.nl" }