Files
mnote/services/ingest_service/app/core/logging.py
T
2025-11-23 10:55:04 +08:00

28 lines
917 B
Python

import json
import logging
import sys
from typing import Any, Dict
class JsonFormatter(logging.Formatter):
"""将日志输出格式化为JSON"""
def format(self, record: logging.LogRecord) -> str: # type: ignore[override]
log: Dict[str, Any] = {
"ts": self.formatTime(record, datefmt="%Y-%m-%dT%H:%M:%S%z"),
"level": record.levelname,
"logger": record.name,
"message": record.getMessage(),
}
if record.exc_info:
log["exc_info"] = self.formatException(record.exc_info)
for key, value in getattr(record, "extra", {}).items():
log[key] = value
return json.dumps(log, ensure_ascii=False)
def setup_logging(level: str = "INFO") -> None:
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(JsonFormatter())
logging.basicConfig(handlers=[handler], level=level, force=True)