31 lines
724 B
Python
31 lines
724 B
Python
"""结构化日志配置。"""
|
|
|
|
import logging
|
|
import sys
|
|
|
|
_CONFIGURED = False
|
|
|
|
|
|
def setup_logging(level: int = logging.INFO) -> None:
|
|
global _CONFIGURED
|
|
if _CONFIGURED:
|
|
return
|
|
handler = logging.StreamHandler(sys.stdout)
|
|
handler.setFormatter(
|
|
logging.Formatter(
|
|
fmt="%(asctime)s | %(levelname)-7s | %(name)s | %(message)s",
|
|
datefmt="%Y-%m-%d %H:%M:%S",
|
|
)
|
|
)
|
|
root = logging.getLogger()
|
|
root.setLevel(level)
|
|
root.handlers = [handler]
|
|
|
|
for noisy in ("uvicorn.access", "asyncio"):
|
|
logging.getLogger(noisy).setLevel(logging.WARNING)
|
|
|
|
_CONFIGURED = True
|
|
|
|
|
|
def get_logger(name: str) -> logging.Logger:
|
|
return logging.getLogger(name) |