Source code for nodeps.extras.log
"""NoDeps Extras Log Module."""
__all__ = (
"LOGGER_DEFAULT_FMT",
"logger",
)
import copy
import sys
try:
# nodeps[log] extras
from loguru import logger as loguru_logger # type: ignore[attr-defined]
except ModuleNotFoundError:
loguru_logger = None
LOGGER_DEFAULT_FMT = (
"<level>{level: <8}</level> <red>|</red> "
"<cyan>{name}</cyan> <red>|</red> <red>|</red> "
"<level>{message}</level>"
)
[docs]
def logger(fmt=LOGGER_DEFAULT_FMT):
"""Returns a new logger.
Examples:
>>> from nodeps import logger
>>>
>>> l = logger("<level>{level: <8}</level> <red>|</red> "
... "<cyan>{name}</cyan> <red>|</red> "
... "<blue><level>{message}</level></blue><red>:</red> "
... "<level>{extra[source]}</level> <red>-></red> "
... "<level>{extra[destination]}</level>")
>>> l.info("test", source="source", destination="destination")
"""
if loguru_logger is None:
msg = "loguru is not installed: installed with 'pip install nodeps[log]'"
raise ImportError(msg)
for item in loguru_logger._core.handlers:
loguru_logger.remove(item)
log = copy.deepcopy(loguru_logger)
if fmt:
log.configure(handlers=[{"sink": sys.stderr, "format": fmt}])
return log