初始话项目框架
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from app.config import settings
|
||||
|
||||
# 日志目录
|
||||
_root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
_log_dir = os.path.join(_root_dir, "logs")
|
||||
|
||||
# 控制台日志格式
|
||||
_CONSOLE_FORMAT = (
|
||||
"<green>{time:YYYYMMDD HH:mm:ss}</green> | "
|
||||
"{process.name}:{process.id} | "
|
||||
"{extra[request_id]} | "
|
||||
"<cyan>{module}</cyan>.<cyan>{function}</cyan>"
|
||||
":<cyan>{line}</cyan> | "
|
||||
"<level>{level}</level>: "
|
||||
"<level>{message}</level>"
|
||||
)
|
||||
|
||||
# 文件日志格式
|
||||
_FILE_FORMAT = (
|
||||
"{time:YYYYMMDD HH:mm:ss} - "
|
||||
"{process.name}:{process.id} | "
|
||||
"{extra[request_id]} | "
|
||||
"{module}.{function}:{line} - {level} - {message}"
|
||||
)
|
||||
|
||||
|
||||
def _setup_logger() -> logger.__class__:
|
||||
"""配置并返回 Loguru 日志实例"""
|
||||
logger.remove()
|
||||
logger.configure(extra={"request_id": "system"})
|
||||
|
||||
# 控制台输出
|
||||
logger.add(
|
||||
sys.stdout,
|
||||
level=settings.logging_level.upper(),
|
||||
format=_CONSOLE_FORMAT,
|
||||
)
|
||||
|
||||
# 非开发环境写入文件
|
||||
if settings.env != "dev":
|
||||
os.makedirs(_log_dir, exist_ok=True)
|
||||
log_file_path = os.path.join(_log_dir, settings.log_file_name)
|
||||
logger.add(
|
||||
log_file_path,
|
||||
level=settings.logging_level.upper(),
|
||||
encoding="UTF-8",
|
||||
format=_FILE_FORMAT,
|
||||
rotation="10 MB",
|
||||
retention=20,
|
||||
enqueue=True,
|
||||
)
|
||||
|
||||
return logger
|
||||
|
||||
|
||||
log = _setup_logger()
|
||||
Reference in New Issue
Block a user