Source code for jaypore_ci.logging

"""
The basic logging module.
"""
import logging
from typing import Any

import structlog

# This is used to accumulate logs and is later sent over to the CI status as a
# separate log list
jaypore_logs = []


[docs]class JayporeLogger: """ This is mainly used to collect logs into a single global variable so that the logs of the CI runner itself can also be posted as part of the CI report. """ def __getstate__(self) -> str: return "stdout" def __setstate__(self, state: Any) -> None: pass def __deepcopy__(self, memodict: dict[Any, Any] = None) -> "JayporeLogger": return self.__class__()
[docs] def msg(self, message: str) -> None: global jaypore_logs # pylint: disable=global-statement jaypore_logs.append(message) if len(jaypore_logs) > 1500: jaypore_logs = jaypore_logs[-1000:] print(message)
log = debug = info = warn = warning = msg fatal = failure = err = error = critical = exception = msg
[docs]class JayporeLoggerFactory: def __init__(self): pass def __call__(self, *args) -> JayporeLogger: return JayporeLogger()
structlog.configure( processors=[ structlog.contextvars.merge_contextvars, structlog.processors.add_log_level, # structlog.processors.StackInfoRenderer(), # structlog.dev.set_exc_info, structlog.processors.TimeStamper(fmt="iso"), structlog.dev.ConsoleRenderer(colors=False), ], wrapper_class=structlog.make_filtering_bound_logger(logging.NOTSET), context_class=dict, logger_factory=JayporeLoggerFactory(), cache_logger_on_first_use=False, ) logger = structlog.get_logger()