From 4412f789e16fe4fc9007a97317d6e7cfdc03cfbe Mon Sep 17 00:00:00 2001 From: LIghtJUNction Date: Sat, 21 Mar 2026 14:13:07 +0800 Subject: [PATCH] Fix: downgrade SSL APPLICATION_DATA_AFTER_CLOSE_NOTIFY errors to debug level --- astrbot/core/log.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/astrbot/core/log.py b/astrbot/core/log.py index 0bee30110..d2312b71a 100644 --- a/astrbot/core/log.py +++ b/astrbot/core/log.py @@ -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