Skip to content

Commit f6afc17

Browse files
committedAug 30, 2024
task: update error handlers, add request_id to error response, log stacktrace only on unknown exceptions
1 parent 986e4fb commit f6afc17

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed
 

‎src/app/core/error_handlers.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import starlette.exceptions
66
import starlette.responses
77
import starlette.status
8+
from starlette.exceptions import HTTPException as StarletteHTTPException
89

910
from app.core.request_context import RequestContext
1011

@@ -19,9 +20,9 @@ def build_error_response(
1920
body = {
2021
"status_code": status_code,
2122
"message": message,
23+
"request_id": RequestContext.get_request_id(),
2224
}
2325
body.update(kwargs)
24-
body["request_id"] = RequestContext.get_request_id()
2526
return fastapi.responses.JSONResponse(body, status_code=status_code)
2627

2728

@@ -32,7 +33,7 @@ def setup_error_handlers(app: fastapi.FastAPI):
3233
async def _value_error_handler(
3334
_: fastapi.Request, exc: ValueError
3435
) -> fastapi.responses.JSONResponse:
35-
_logger.exception(exc)
36+
_logger.error(exc)
3637
return build_error_response(
3738
status_code=starlette.status.HTTP_400_BAD_REQUEST,
3839
message=str(exc),
@@ -50,16 +51,14 @@ async def _internal_server_error_handler(
5051
async def _internal_http_exception_handler(
5152
_: fastapi.Request, exc: fastapi.HTTPException
5253
) -> fastapi.responses.JSONResponse:
53-
_logger.exception(exc)
54+
_logger.error(exc)
5455
return build_error_response(
5556
status_code=exc.status_code,
5657
message=exc.detail,
5758
)
5859

5960
app.add_exception_handler(ValueError, _value_error_handler)
60-
app.add_exception_handler(Exception, _internal_server_error_handler)
6161
# Override starlette.exceptions.HTTPException response with our handler. Noe that fastapi.HTTPException inherits
6262
# from starlette.exceptions.HTTPException. See https://fastapi.tiangolo.com/tutorial/handling-errors
63-
app.add_exception_handler(
64-
starlette.exceptions.HTTPException, _internal_http_exception_handler
65-
)
63+
app.add_exception_handler(StarletteHTTPException, _internal_http_exception_handler)
64+
app.add_exception_handler(Exception, _internal_server_error_handler)

0 commit comments

Comments
 (0)