def addStoryLogHandlerToLogger(self, level): """Add dedicated log handler to some package loggers (hence all its children, too) for routing logs into the GUI widget. NOTE: We MUST NOT change log levels of the loggers themselves here! :param level: The log level :return: None """ packagesToChange = (__name__, "storage", "story", "network", "selenium") self.storyLogHandler.setLevel(level) for package in packagesToChange: tmpLogger = clog.getLogger( package) # Side effect: sets new logger if not exists! tmpLogger.removeHandler( self.storyLogHandler) # removing only works by reference! tmpLogger.addHandler(self.storyLogHandler)
def test_setReleaseDate_shouldLogOnError(self): # Given sut = Product() givenDatetime = dtt.datetime(2020, 1, 30, 15, 40, 00) invalidTimezone = "very/invalid" loggerName = "shop.product" loggerUnderTest = clog.getLogger(loggerName) expectedLogLevel = "ERROR" expectedPartOfLogMessage = "Could not set product release date" # When with self.assertLogs(loggerUnderTest, level=expectedLogLevel) as tlog: sut.setReleaseDate(givenDatetime, timezone=invalidTimezone) # Then self.assertEqual(1, len(tlog.output)) # expect one single log message in array self.assertIn(f"{expectedLogLevel}:{loggerName}:{expectedPartOfLogMessage}", tlog.output[0])
# actionBundleDao.py import pathlib as pl import typing as tp import debug.logger as clog import storage.fileDao as filedao from config.base import APP_USERDATA_DIR from story.actionBundle import ActionBundle from story.actionBundleConverter import DictActionBundleConverter logger = clog.getLogger(__name__) class JSONActionBundleDao(filedao.JsonFileDao): _DEFAULT_DIR: tp.ClassVar[pl.Path] = APP_USERDATA_DIR / "actionbundles" _TABLE_NAME: tp.ClassVar[str] = "ActionBundles" def __init__(self, filepath: str = None): if not filepath: thePath = self._DEFAULT_DIR else: thePath = pl.Path(filepath) super().__init__(path=thePath, table=self._TABLE_NAME) def loadAll(self) -> ActionBundle: """ :return: An instance of class ActionBundle if loading succeeds :raises: """ dataDict = None