def setup_structured_logging()

in app/observability.py [0:0]


def setup_structured_logging() -> None:
    LoggingInstrumentor().instrument()

    handler = [
        "console-pretty" if settings.environment == "development" else "console-mozlog"
    ]

    dictConfig(
        {
            "version": 1,
            "formatters": {
                "json": {
                    "()": JsonFormatter,
                    "format": "%(asctime)s %(name)s %(levelname)s %(message)s %(otelTraceID)s %(otelSpanID)s %(otelTraceSampled)s",
                    "rename_fields": {
                        "levelname": "severity",
                        "asctime": "timestamp",
                        "otelTraceID": "logging.googleapis.com/trace",
                        "otelSpanID": "logging.googleapis.com/spanId",
                        "otelTraceSampled": "logging.googleapis.com/trace_sampled",
                    },
                    "datefmt": "%Y-%m-%dT%H:%M:%SZ",
                },
                "text": {
                    "format": "%(message)s",
                },
            },
            "handlers": {
                "console-mozlog": {
                    "level": logging.INFO,
                    "class": "logging.StreamHandler",
                    "formatter": "json",
                    "stream": sys.stdout,
                },
                "console-pretty": {
                    "level": logging.INFO,
                    "class": "rich.logging.RichHandler",
                    "formatter": "text",
                },
            },
            "loggers": {
                "app": {
                    "handlers": handler,
                    "propagate": True,
                    "level": logging.INFO,
                },
                "uvicorn": {
                    "handlers": handler,
                    "propagate": True,
                    "level": logging.INFO,
                },
                "fastapi": {
                    "handlers": handler,
                    "propagate": True,
                    "level": logging.INFO,
                },
            },
        }
    )