Source code for gd.logging

import logging

from gd.typing import Any, Optional

__all__ = ("get_logger", "setup_logging", "log")


def get_logger(name: Optional[str] = None) -> logging.Logger:
    return logging.getLogger(name)


def get_module_logger():
    return get_logger(__name__.split(".").pop(0))


[docs]def setup_logging( level: int = logging.DEBUG, *, stream: Any = None, file: Any = None, formatter: Optional[str] = None, ) -> None: """Function that sets up logs of the module. Parameters ---------- level: :class:`int` Level to set. stream: `Any` Stream to log messages into. ``stderr`` by default. file: `Any` File to log messages to. If not given, messages are logged into the ``stream``. formatter: :class:`str` Formatter to use. ``[LEVEL] (time) {gd.module}: Message`` by default. """ handler = logging.StreamHandler(stream) if file is None else logging.FileHandler(file) if formatter is None: formatter = "[%(levelname)s] (%(asctime)s) {%(name)s}: %(message)s" handler.setFormatter(logging.Formatter(formatter)) log.addHandler(handler) log.setLevel(level)
log = get_module_logger() log.addHandler(logging.NullHandler())