Source code for modos.logging

from functools import lru_cache
import os
import sys

from loguru import logger


@lru_cache()
[docs] def setup_logging( level=None, file=None, diagnose=False, backtrace=False, time=False ): """Configure logging behaviour. Parameters ---------- level The logging level to use. Default is "INFO". file: A file where logs should be persisted in addition to being printed to stderr. diagnose Include diagnostic information. Could leak sensitive information. backtrace Include full stack traces. Could leak sensitive information. """ format = "" if time: format += "<green>{time:YYYY-MM-DD HH:mm:ss Z}</green> | " format += "<level>{level: <4}</level> | <level>{message}</level>" level = level or os.getenv("MODOS_LOG_LEVEL", "INFO").upper() logger.remove() # Remove default handler logger.add( sys.stderr, level=level, format=format, backtrace=backtrace, diagnose=diagnose, ) if file: logger.add( file, level=level, format=format, backtrace=backtrace, diagnose=diagnose, rotation="10 MB", retention="10 days", )