Exemple #1
0
    def test_bytes_nop(self):
        """
        If the value is already unicode, don't do anything.
        """
        ud = UnicodeDecoder()

        assert {"foo": "b\u2013r"} == ud(None, None, {"foo": "b\u2013r"})
Exemple #2
0
    def test_passes_arguments(self):
        """
        Encoding options are passed into the encoding call.
        """
        ud = UnicodeDecoder("utf-8", "ignore")

        assert {"foo": ""} == ud(None, None, {"foo": b"\xa1\xa4"})
Exemple #3
0
    def test_decodes(self):
        """
        Byte strings get decoded (as UTF-8 by default).
        """
        ud = UnicodeDecoder()

        assert {"foo": "b\xe4r"} == ud(None, None, {"foo": b"b\xc3\xa4r"})
Exemple #4
0
def setup(sentry: str, debug: bool = False) -> None:
    processors = [
        filter_by_level,
        add_log_level,
        add_logger_name,
        PositionalArgumentsFormatter(),
        StackInfoRenderer(),
        format_exc_info,
        UnicodeDecoder(),
    ]

    configure(
        logger_factory=LoggerFactory(),
        wrapper_class=BoundLogger,
        cache_logger_on_first_use=True,
    )

    if debug:
        styles = ConsoleRenderer.get_default_level_styles()
        styles["debug"] = DIM
        processors += [
            TimeStamper(fmt="%Y-%m-%d %H:%M:%S"),
            ConsoleRenderer(level_styles=styles),
        ]
    else:
        handler = StreamHandler()
        formatter = CustomJsonFormatter("%(levelname)s %(name)s %(message)s")
        handler.setFormatter(formatter)
        for module in ("tornado", "tortoise", "aiomysql"):
            getLogger(module).addHandler(handler)

        sentry_logging = LoggingIntegration(level=INFO, event_level=ERROR)
        init(sentry, integrations=[sentry_logging])
        processors.append(JSONRenderer())

    handler = StreamHandler()
    configure(processors=processors)
    log = get_logger("api")
    log.addHandler(handler)
    log.propagate = False
    log.setLevel(DEBUG if debug else INFO)
from functools import wraps
from logging import INFO, FileHandler
from os import environ, makedirs
from os.path import exists, join

from ansible.plugins.callback import CallbackBase
from structlog import configure, get_logger
from structlog.stdlib import BoundLogger, LoggerFactory, add_log_level
from structlog.processors import JSONRenderer, TimeStamper, UnicodeDecoder, format_exc_info
from yaml import dump

configure(processors=[
    add_log_level,
    TimeStamper(fmt="iso"),
    format_exc_info,
    UnicodeDecoder(),
    JSONRenderer(),
],
          context_class=dict,
          logger_factory=LoggerFactory(),
          wrapper_class=BoundLogger,
          cache_logger_on_first_use=True)
logger = get_logger('origin-ci-tool')
logger.setLevel(INFO)


@contextmanager
def bind_logger(**kwargs):
    global logger
    logger = logger.bind(**kwargs)
    try: