Fix: downgrade SSL APPLICATION_DATA_AFTER_CLOSE_NOTIFY errors to debug level

This commit is contained in:
LIghtJUNction
2026-03-21 14:13:07 +08:00
parent cefeaf8d9f
commit 4412f789e1

View File

@@ -93,10 +93,36 @@ def _patch_record(record: "Record") -> None:
_loguru = _raw_loguru_logger.patch(_patch_record)
class _SSLDebugFilter(logging.Filter):
"""将特定 SSL 错误降级为 DEBUG 级别,避免日志刷屏。"""
_SSL_IGNORE_PATTERNS = (
"APPLICATION_DATA_AFTER_CLOSE_NOTIFY",
"SSL: APPLICATION_DATA_AFTER_CLOSE_NOTIFY",
)
def filter(self, record: logging.LogRecord) -> bool:
msg = record.getMessage()
for pattern in self._SSL_IGNORE_PATTERNS:
if pattern in msg:
record.levelno = logging.DEBUG
record.levelname = "DEBUG"
return True
return True
class _LoguruInterceptHandler(logging.Handler):
"""将 logging 记录转发到 loguru。"""
def emit(self, record: logging.LogRecord) -> None:
# 检查是否需要降级 SSL 相关错误
msg = record.getMessage()
for pattern in _SSLDebugFilter._SSL_IGNORE_PATTERNS:
if pattern in msg:
record.levelno = logging.DEBUG
record.levelname = "DEBUG"
break
try:
level: str | int = _loguru.level(record.levelname).name
except ValueError:
@@ -179,6 +205,8 @@ class LogManager:
"asyncio": logging.WARNING,
"tzlocal": logging.WARNING,
"apscheduler": logging.WARNING,
"quart": logging.WARNING,
"hypercorn": logging.WARNING,
}
@classmethod