"""Formatters for standardized SQLSpec observability logs."""
import logging
from logging import LogRecord
from typing import Any
from sqlspec.utils.logging import StructuredFormatter
__all__ = ("OTelConsoleFormatter", "OTelJSONFormatter")
class OTelConsoleFormatter(logging.Formatter):
"""Console formatter that orders OTel-aligned fields consistently."""
def __init__(self, datefmt: str | None = None) -> None:
super().__init__(datefmt=datefmt)
self._field_order = (
"db.system",
"db.operation",
"trace_id",
"span_id",
"correlation_id",
"duration_ms",
"rows_affected",
"execution_mode",
"is_many",
"is_script",
"sqlspec.driver",
"sqlspec.bind_key",
"sqlspec.transaction_state",
"sqlspec.prepared_statement",
"db.statement",
"db.statement.truncated",
"db.statement.length",
"db.statement.preview_length",
"db.statement.hash",
)