lesslogger

This commit is contained in:
2025-08-31 22:32:02 +03:00
parent aebca9c522
commit 66f2e0131b

View File

@@ -32,11 +32,27 @@ def filter(record: logging.LogRecord) -> bool:
else "" else ""
) )
# Подавляем логи ошибок авторизации # Подавляем логи ошибок авторизации и GraphQL трейсбеки
if record.levelno == logging.ERROR and record.getMessage(): if record.levelno >= logging.ERROR and record.getMessage():
message = 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 return True
@@ -127,14 +143,30 @@ root_logger.addFilter(filter)
ignore_logs = ["_trace", "httpx", "_client", "atrace", "aiohttp", "_client", "ariadne", "graphql"] ignore_logs = ["_trace", "httpx", "_client", "atrace", "aiohttp", "_client", "ariadne", "graphql"]
for lgr in ignore_logs: for lgr in ignore_logs:
loggr = logging.getLogger(lgr) loggr = logging.getLogger(lgr)
loggr.setLevel(logging.WARNING) # Повышаем до WARNING для подавления INFO и DEBUG loggr.setLevel(logging.CRITICAL) # Подавляем все кроме критических ошибок
# Дополнительно подавляем логи GraphQL и Ariadne для ошибок авторизации # Дополнительно подавляем логи GraphQL и Ariadne для ошибок авторизации
graphql_logger = logging.getLogger("graphql") graphql_logger = logging.getLogger("graphql")
graphql_logger.setLevel(logging.WARNING) graphql_logger.setLevel(logging.CRITICAL) # Подавляем ERROR уровень для авторизации
ariadne_logger = logging.getLogger("ariadne") 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]: def custom_error_formatter(error: GraphQLError, debug: bool = False) -> dict[Any, Any]: