Source code for pannb.util

"""Some utilities, e.g. setup logging."""

from __future__ import annotations

import logging
import os

try:
    from coloredlogs import ColoredFormatter as Formatter
except ImportError:
    from logging import Formatter


[docs]def setup_logging( name: str = "pannb", level: str = "INFO", env_var: str = "PANNBLOGLEVEL", fmt: str = "%(name)s %(levelname)s %(message)s", Handler=logging.StreamHandler, Formatter=Formatter, ) -> logging.Logger: """Setup logging. :param env_var: if not empty, set log level from this environment variable. """ logger = logging.getLogger(name) handler = Handler() handler.setFormatter(Formatter(fmt)) logger.addHandler(handler) if env_var: try: logger.setLevel(level=(_level := os.environ.get(env_var, level))) except ValueError: logger.setLevel(level=level) logger.error( "%s=%s is not a valid logging level, set to default %s.", env_var, _level, level, ) else: logger.setLevel(level=level) return logger