Skip to content

Commit 52d2650

Browse files
ImTotemclaude
andcommitted
fix(graphql): suppress stacktrace for expected errors in logs
Override process_errors to skip logging AppException (Unauthorized, NotFound, etc). Only unexpected errors get stacktrace in logs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 75f3ad7 commit 52d2650

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

src/bcsd_api/graphql/schema.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
import logging
2+
from typing import List
3+
14
import strawberry
5+
from graphql import GraphQLError
6+
from strawberry.types import ExecutionContext
27

8+
from bcsd_api.exception.base import AppException
39
from bcsd_api.member import resolvers as member_resolvers
410
from bcsd_api.member.types import (
511
FiltersType,
@@ -47,8 +53,19 @@ class Mutation:
4753
delete_link: bool = strawberry.mutation(resolver=link_resolvers.resolve_delete)
4854

4955

56+
logger = logging.getLogger("strawberry.execution")
57+
58+
59+
def _process_errors(errors: List[GraphQLError], ctx: ExecutionContext | None = None) -> None:
60+
for err in errors:
61+
if isinstance(err.original_error, AppException):
62+
continue
63+
logger.error(err.message, exc_info=err.original_error)
64+
65+
5066
schema = strawberry.Schema(
5167
query=Query,
5268
mutation=Mutation,
5369
extensions=[AppErrorExtension],
70+
process_errors=_process_errors,
5471
)

0 commit comments

Comments
 (0)