Source code for imod.logging.ilogger

from abc import abstractmethod

from imod.logging.loglevel import LogLevel


[docs] class ILogger: """ Interface to be implemented by all logger wrappers. """
[docs] @abstractmethod def debug(self, message: str, additional_depth: int = 0) -> None: """ Log message with severity ':attr:`~imod.logging.loglevel.LogLevel.DEBUG`'. Parameters ---------- message : str message to be logged additional_depth: Optional[int] additional depth level. Use this to correct the filename and line number when you add logging to a decorator """ raise NotImplementedError
[docs] @abstractmethod def info(self, message: str, additional_depth: int = 0) -> None: """ Log message with severity ':attr:`~imod.logging.loglevel.LogLevel.INFO`'. Parameters ---------- message : str message to be logged additional_depth: Optional[int] additional depth level. Use this to correct the filename and line number when you add logging to a decorator """ raise NotImplementedError
[docs] @abstractmethod def warning(self, message: str, additional_depth: int = 0) -> None: """ Log message with severity ':attr:`~imod.logging.loglevel.LogLevel.WARNING`'. Parameters ---------- message : str message to be logged additional_depth: Optional[int] additional depth level. Use this to correct the filename and line number when you add logging to a decorator """ raise NotImplementedError
[docs] @abstractmethod def error(self, message: str, additional_depth: int = 0) -> None: """ Log message with severity ':attr:`~imod.logging.loglevel.LogLevel.ERROR`'. Parameters ---------- message : str message to be logged additional_depth: Optional[int] additional depth level. Use this to correct the filename and line number when you add logging to a decorator """ raise NotImplementedError
[docs] @abstractmethod def critical(self, message: str, additional_depth: int = 0) -> None: """ Log message with severity ':attr:`~imod.logging.loglevel.LogLevel.CRITICAL`'. Parameters ---------- message : str message to be logged additional_depth: Optional[int] additional depth level. Use this to correct the filename and line number when you add logging to a decorator """ raise NotImplementedError
[docs] def log(self, loglevel: LogLevel, message: str, additional_depth: int = 0) -> None: """ logs a message with the specified urgency level. """ match loglevel: case LogLevel.DEBUG: self.debug(message, additional_depth) case LogLevel.INFO: self.info(message, additional_depth) case LogLevel.WARNING: self.warning(message, additional_depth) case LogLevel.ERROR: self.error(message, additional_depth) case LogLevel.CRITICAL: self.critical(message, additional_depth) case _: raise ValueError(f"Unknown logging urgency at level {loglevel}")