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()