Source code for worldline.connect.sdk.log.python_communicator_logger

from logging import Logger
from typing import Optional

from .communicator_logger import CommunicatorLogger


[docs] class PythonCommunicatorLogger(CommunicatorLogger): """ A communicator logger that is backed by the log library. """
[docs] def __init__(self, logger: Logger, log_level: int, error_log_level: Optional[int] = None): """ Logs messages to the argument logger using the argument log_level. If absent, the error_log_level will be equal to the log_level. Note that if the CommunicatorLogger's log level is lower than the argument logger's log level (e.g. the CommunicatorLogger is given log.INFO as level and the argument logger has a level of log.WARNING), then nothing will be logged to the logger. :param logger: the logger to log to :param log_level: the log level that will be used for non-error messages logged via the CommunicatorLogger :param error_log_level: the log level that will be used for error messages logged via the CommunicatorLogger. """ CommunicatorLogger.__init__(self) if not error_log_level: error_log_level = log_level if logger is None: raise ValueError("logger is required") if log_level is None: raise ValueError("log_level is required") if error_log_level is None: raise ValueError("error_log_level is required") self.__logger = logger self.__log_level = log_level self.__error_log_level = error_log_level
[docs] def log(self, message: str, thrown: Optional[Exception] = None) -> None: """ Log a message to the underlying logger. If thrown is absent, the message will be logged with the CommunicatorLogger's log_level, if a thrown object is provided, the message and exception will be logged with the CommunicatorLogger's error_log_level. :param message: the message to be logged :param thrown: an optional throwable object """ if not thrown: self.__logger.log(self.__log_level, message) else: self.__logger.log(self.__error_log_level, message, thrown)