From 86b28330b657c7f8ca3f651d4194d9917c5ea1c9 Mon Sep 17 00:00:00 2001 From: I Luk Kim Date: Wed, 15 Apr 2026 22:42:52 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20request=20log=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=B2=94=EC=9C=84=20=ED=95=84=ED=84=B0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(min/max=5Fstatus=5Fcode)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 5xx 에러 필터를 status_code=500 (exact) 대신 min_status_code=500으로 변경해 500~599 전체 포함. Co-Authored-By: Claude Sonnet 4.6 --- app/api/v1/endpoints/request_logs.py | 8 +++++++- frontend/components/UnifiedLogViewer.tsx | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/api/v1/endpoints/request_logs.py b/app/api/v1/endpoints/request_logs.py index 7077193..c5a845e 100644 --- a/app/api/v1/endpoints/request_logs.py +++ b/app/api/v1/endpoints/request_logs.py @@ -50,7 +50,9 @@ async def get_request_logs( start_date: Optional[datetime] = Query(None, description="Filter by start date"), end_date: Optional[datetime] = Query(None, description="Filter by end date"), method: Optional[str] = Query(None, description="Filter by HTTP method"), - status_code: Optional[int] = Query(None, description="Filter by status code"), + status_code: Optional[int] = Query(None, description="Filter by exact status code"), + min_status_code: Optional[int] = Query(None, description="Filter by minimum status code (e.g. 500 for all 5xx)"), + max_status_code: Optional[int] = Query(None, description="Filter by maximum status code (e.g. 599 for all 5xx)"), endpoint: Optional[str] = Query(None, description="Filter by endpoint (supports wildcards)"), min_response_time: Optional[float] = Query(None, description="Minimum response time in ms"), max_response_time: Optional[float] = Query(None, description="Maximum response time in ms"), @@ -74,6 +76,10 @@ async def get_request_logs( filters.append(RequestLog.method == method.upper()) if status_code: filters.append(RequestLog.status_code == status_code) + if min_status_code: + filters.append(RequestLog.status_code >= min_status_code) + if max_status_code: + filters.append(RequestLog.status_code <= max_status_code) if endpoint: # Support wildcard matching if '*' in endpoint: diff --git a/frontend/components/UnifiedLogViewer.tsx b/frontend/components/UnifiedLogViewer.tsx index e5132d6..29b893f 100644 --- a/frontend/components/UnifiedLogViewer.tsx +++ b/frontend/components/UnifiedLogViewer.tsx @@ -93,7 +93,7 @@ const UnifiedLogViewer: React.FC = () => { // Filter by log type if (logType === 'errors') { - params.append('status_code', '500'); + params.append('min_status_code', '500'); } else if (logType === 'success') { params.append('status_code', '200'); }