chore: init monorepo snapshot
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user