Skip to content
Snippets Groups Projects
__init__.py 1.22 KiB
# -*- coding:utf-8; eval: (blacken-mode) -*-

import logging
import contextlib


logger = logging.getLogger(__name__)


def _init_logging():
    import logging.config

    cfg = {
        "version": 1,
        "formatters": {
            "standard": {
                "format": "%(asctime)s %(name)s %(levelname)s: %(message)s",
            }
        },
        "handlers": {
            "default": {
                "class": "logging.StreamHandler",
                "formatter": "standard",
                "stream": "ext://sys.stdout",
            }
        },
        "loggers": {
            "usadelndsoc": {
                "handlers": ["default"],
                "level": "INFO",
                "propagate": True,
            },
        },
    }

    logging.config.dictConfig(cfg)


class with_log_level(contextlib.ContextDecorator):
    def __init__(self, level):
        self._level = level

    def _recreate_cm(self):
        return with_log_level(self._level)

    def __enter__(self):
        self._old_level = int(logger.level)
        logger.setLevel(self._level)
        return self

    def __exit__(self, *exc):
        logger.setLevel(self._old_level)
        return False


_init_logging()
del _init_logging, logging, contextlib