Skip to content

Commit ed32abc

Browse files
committed
♻️ Refactor HTTP error handler to improve logging and response structure
1 parent bf4881f commit ed32abc

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

packages/service-library/src/servicelib/fastapi/http_error.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,24 +48,35 @@ async def _http_error_handler(request: Request, exc: Exception) -> JSONResponse:
4848
"errors": error_extractor(exc) if error_extractor else [f"{exc}"]
4949
}
5050

51+
response = JSONResponse(
52+
content=jsonable_encoder(
53+
{"error": error_content} if envelope_error else error_content
54+
),
55+
status_code=status_code,
56+
)
57+
5158
if is_5xx_server_error(status_code):
5259
_logger.exception(
5360
create_troubleshootting_log_kwargs(
54-
"Unexpected error happened in the Resource Usage Tracker. Please contact support.",
61+
f"A 5XX server error happened in current service. Responding with {error_content} and {status_code} status code",
5562
error=exc,
5663
error_context={
5764
"request": request,
58-
"request.method": f"{request.method}",
65+
"request.client_host": (
66+
request.client.host if request.client else "unknown"
67+
),
68+
"request.method": request.method,
69+
"request.url_path": request.url.path,
70+
"request.query_params": dict(request.query_params),
71+
"request.headers": dict(request.headers),
72+
"response": response,
73+
"response.error_content": error_content,
74+
"response.status_code": status_code,
5975
},
6076
)
6177
)
6278

63-
return JSONResponse(
64-
content=jsonable_encoder(
65-
{"error": error_content} if envelope_error else error_content
66-
),
67-
status_code=status_code,
68-
)
79+
return response
6980

7081
return _http_error_handler
7182

0 commit comments

Comments
 (0)