From 66f2e0131b9f4bbc8de7b079ed135bc4660fcbc5 Mon Sep 17 00:00:00 2001 From: Untone Date: Sun, 31 Aug 2025 22:32:02 +0300 Subject: [PATCH] lesslogger --- utils/logger.py | 46 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/utils/logger.py b/utils/logger.py index 8efb3bcd..a81dd6f0 100644 --- a/utils/logger.py +++ b/utils/logger.py @@ -32,11 +32,27 @@ def filter(record: logging.LogRecord) -> bool: else "" ) - # Подавляем логи ошибок авторизации - if record.levelno == logging.ERROR and record.getMessage(): + # Подавляем логи ошибок авторизации и GraphQL трейсбеки + if record.levelno >= logging.ERROR and record.getMessage(): message = record.getMessage() - if "Требуется авторизация" in message or "AuthorizationError" in message: - return False # Не логируем ошибки авторизации + # Подавляем ошибки авторизации + if any( + phrase in message + for phrase in [ + "Требуется авторизация", + "AuthorizationError", + "GraphQL request:", + "Traceback (most recent call last):", + "graphql.error.graphql_error.GraphQLError: Требуется авторизация", + ] + ): + return False # Не логируем ошибки авторизации и их трейсбеки + + # Подавляем повторяющиеся Ariadne логи + if record.name in ["ariadne", "graphql"] and record.levelno == logging.ERROR: + message = record.getMessage() + if "Требуется авторизация" in message: + return False return True @@ -127,14 +143,30 @@ root_logger.addFilter(filter) ignore_logs = ["_trace", "httpx", "_client", "atrace", "aiohttp", "_client", "ariadne", "graphql"] for lgr in ignore_logs: loggr = logging.getLogger(lgr) - loggr.setLevel(logging.WARNING) # Повышаем до WARNING для подавления INFO и DEBUG + loggr.setLevel(logging.CRITICAL) # Подавляем все кроме критических ошибок # Дополнительно подавляем логи GraphQL и Ariadne для ошибок авторизации graphql_logger = logging.getLogger("graphql") -graphql_logger.setLevel(logging.WARNING) +graphql_logger.setLevel(logging.CRITICAL) # Подавляем ERROR уровень для авторизации ariadne_logger = logging.getLogger("ariadne") -ariadne_logger.setLevel(logging.WARNING) +ariadne_logger.setLevel(logging.CRITICAL) # Подавляем ERROR уровень для авторизации + + +# Создаем специальный фильтр для Ariadne +class AriadneAuthFilter(logging.Filter): + def filter(self, record: logging.LogRecord) -> bool: + message = record.getMessage() + # Полностью блокируем логи связанные с авторизацией в Ariadne + return not any( + phrase in message + for phrase in ["Требуется авторизация", "AuthorizationError", "GraphQL request:", "decorated_function"] + ) + + +# Применяем фильтр к Ariadne и GraphQL логгерам +ariadne_logger.addFilter(AriadneAuthFilter()) +graphql_logger.addFilter(AriadneAuthFilter()) def custom_error_formatter(error: GraphQLError, debug: bool = False) -> dict[Any, Any]: