lesslogger
This commit is contained in:
@@ -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]:
|
||||||
|
|||||||
Reference in New Issue
Block a user