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

from datetime import datetime
from threading import Lock
from typing import Optional

from .communicator_logger import CommunicatorLogger


[docs] class SysOutCommunicatorLogger(CommunicatorLogger): """ A communicator logger that prints its message to sys.stdout It includes a timestamp in yyyy-MM-ddTHH:mm:ss format in the system time zone. """ _global_lock = Lock() _old_print = print
[docs] @staticmethod def instance() -> 'SysOutCommunicatorLogger': return _SYS_OUT_COMMUNICATOR_LOGGER_INSTANCE
def __print(self, *a) -> None: with self._global_lock: self._old_print(*a)
[docs] def log(self, message: str, thrown: Optional[Exception] = None) -> None: # Make sure the same object is used for locking and printing self.__print(self.__get_date_prefix() + message) if thrown: self.__print(str(thrown))
@staticmethod def __get_date_prefix() -> str: return datetime.now().strftime("%Y-%m-%dT%H:%M:%S ")
_SYS_OUT_COMMUNICATOR_LOGGER_INSTANCE = SysOutCommunicatorLogger()