增加了代理平台和日志

This commit is contained in:
yml2213
2026-06-24 14:22:29 +08:00
parent 0d03b2c242
commit 83345dfdc5
21 changed files with 1134 additions and 444 deletions
+45 -14
View File
@@ -1,17 +1,37 @@
"""日志配置模块"""
import os
import sys
from datetime import date
from pathlib import Path
from loguru import logger
def setup_logger(level: str = "INFO", log_file: str = None) -> None:
def _should_rotate(message, file):
"""自定义轮转条件:每天0点轮转,或单文件超过10M。"""
if not file:
return False
try:
# 单文件超过 10M 则轮转
if os.path.getsize(file.name) > 10 * 1024 * 1024:
return True
# 跨天则轮转:日志日期 ≠ 文件最后修改日期
file_date = date.fromtimestamp(os.path.getmtime(file.name))
log_date = message.record["time"].date()
return file_date != log_date
except OSError:
return False
def setup_logger(level: str = "INFO", log_dir: str = None, log_file: str = None) -> None:
"""
配置日志
Args:
level: 日志级别
log_file: 日志文件路径
log_dir: 日志目录路径(文件名按日期自动生成,如 app-2026-06-24.log
log_file: 日志文件路径(兼容旧接口,优先级低于 log_dir)
"""
# 移除默认handler
logger.remove()
@@ -27,16 +47,27 @@ def setup_logger(level: str = "INFO", log_file: str = None) -> None:
colorize=True,
)
# 文件输出
if log_file:
log_path = Path(log_file)
log_path.parent.mkdir(parents=True, exist_ok=True)
# 确定日志文件路径
if log_dir:
# 新接口:按目录 + 日期命名
dir_path = Path(log_dir)
dir_path.mkdir(parents=True, exist_ok=True)
file_path = str(dir_path / "app-{time:YYYY-MM-DD}.log")
elif log_file:
# 兼容旧接口
file_path = Path(log_file)
file_path.parent.mkdir(parents=True, exist_ok=True)
file_path = str(file_path)
else:
return
logger.add(
log_file,
level=level,
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} | {message}",
rotation="10 MB",
retention="7 days",
encoding="utf-8",
)
# 文件输出:按天命名 + 单文件最大10M轮转 + 保留7天
logger.add(
file_path,
level=level,
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} | {message}",
rotation=_should_rotate, # 超过10M轮转
retention="7 days", # 保留7天
compression="zip", # 旧日志自动压缩节省空间
encoding="utf-8",
)