Skip to content

Base

provide.foundation.logger.config.base

TODO: Add module docstring.

Functions

get_config_logger

get_config_logger() -> Any

Get logger for config warnings that respects FOUNDATION_LOG_OUTPUT.

Source code in provide/foundation/logger/config/base.py
def get_config_logger() -> Any:
    """Get logger for config warnings that respects FOUNDATION_LOG_OUTPUT."""
    import structlog

    from provide.foundation.utils.streams import get_foundation_log_stream

    try:
        foundation_output = os.getenv("FOUNDATION_LOG_OUTPUT", "stderr").lower()
        output_stream = get_foundation_log_stream(foundation_output)
    except Exception:
        output_stream = sys.stderr

    try:
        config = structlog.get_config()
        structlog.configure(
            processors=config.get("processors", [structlog.dev.ConsoleRenderer()]),
            logger_factory=structlog.PrintLoggerFactory(file=output_stream),
            wrapper_class=config.get("wrapper_class", structlog.BoundLogger),
            cache_logger_on_first_use=config.get("cache_logger_on_first_use", True),
        )
    except Exception:
        structlog.configure(
            processors=[structlog.dev.ConsoleRenderer()],
            logger_factory=structlog.PrintLoggerFactory(file=output_stream),
            wrapper_class=structlog.BoundLogger,
            cache_logger_on_first_use=True,
        )

    return structlog.get_logger().bind(logger_name="provide.foundation.logger.config")