65 lines
1.5 KiB
Python
65 lines
1.5 KiB
Python
from loguru import logger
|
|
from pathlib import Path
|
|
|
|
from config.setting import settings
|
|
|
|
# 日志目录
|
|
LOG_DIR = Path(__file__).parent.parent.parent / "logs"
|
|
LOG_DIR.mkdir(exist_ok=True)
|
|
|
|
# 日志级别
|
|
LOG_LEVEL = settings.LOG_LEVEL.upper()
|
|
|
|
# 日志格式
|
|
STDOUT_FORMAT = (
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | "
|
|
"<level>{level: <8}</level> | "
|
|
"<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - "
|
|
"<level>{message}</level>"
|
|
)
|
|
|
|
FILE_FORMAT = (
|
|
"{time:YYYY-MM-DD HH:mm:ss.SSS} | "
|
|
"{level: <8} | "
|
|
"{name}:{function}:{line} - {message}"
|
|
)
|
|
|
|
# 移除默认处理器
|
|
logger.remove()
|
|
|
|
# 添加控制台处理器
|
|
logger.add(
|
|
sink="sys.stdout",
|
|
level=LOG_LEVEL,
|
|
format=STDOUT_FORMAT,
|
|
colorize=True,
|
|
backtrace=True, # 显示完整异常堆栈
|
|
diagnose=True, # 显示详细异常信息
|
|
)
|
|
|
|
# 添加文件处理器 - 常规日志
|
|
logger.add(
|
|
sink=LOG_DIR / "app.log",
|
|
level="INFO",
|
|
format=FILE_FORMAT,
|
|
rotation="10 MB", # 日志文件大小达到10MB时自动分割
|
|
retention="7 days", # 保留7天的日志
|
|
compression="zip", # 归档时压缩为zip
|
|
enqueue=True, # 异步写入
|
|
serialize=False, # 不使用JSON格式
|
|
)
|
|
|
|
# 添加文件处理器 - 错误日志
|
|
logger.add(
|
|
sink=LOG_DIR / "error.log",
|
|
level="ERROR",
|
|
format=FILE_FORMAT,
|
|
rotation="10 MB",
|
|
retention="30 days",
|
|
compression="zip",
|
|
enqueue=True,
|
|
serialize=False,
|
|
)
|
|
|
|
# 导出配置好的logger
|
|
__all__ = ["logger"] |