From e5e459d126bbe4257e0023bef3ef0038707513bf Mon Sep 17 00:00:00 2001 From: "isfun.dev@gmail.com" Date: Tue, 16 Jun 2026 12:43:29 +0500 Subject: [PATCH 1/2] Fix FastAPI missing client handling --- .../framework/fastapi/implementation.py | 8 ++++++-- tests/test_fastapi.py | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/json_logging/framework/fastapi/implementation.py b/json_logging/framework/fastapi/implementation.py index 71bd85e..fdcf2ca 100644 --- a/json_logging/framework/fastapi/implementation.py +++ b/json_logging/framework/fastapi/implementation.py @@ -111,10 +111,14 @@ def get_method(self, request: starlette.requests.Request): return request.method def get_remote_ip(self, request: starlette.requests.Request): - return request.client.host + if request.client: + return request.client.host + return json_logging.EMPTY_VALUE def get_remote_port(self, request: starlette.requests.Request): - return request.client.port + if request.client: + return request.client.port + return json_logging.EMPTY_VALUE class FastAPIResponseInfoExtractor(BaseResponseInfoExtractor): diff --git a/tests/test_fastapi.py b/tests/test_fastapi.py index 73b5750..3cd3493 100644 --- a/tests/test_fastapi.py +++ b/tests/test_fastapi.py @@ -215,3 +215,22 @@ def test_excluded_from_request_instrumentation(client_and_log_handler): assert response.status_code == 200 assert len(handler.messages) == 0 + + +def test_request_info_extractor_handles_missing_client(): + """Test if missing request client information falls back to empty values""" + import json_logging + from json_logging.framework.fastapi.implementation import FastAPIRequestInfoExtractor + + request = fastapi.Request({ + "type": "http", + "method": "GET", + "path": "/", + "headers": [], + "query_string": b"", + "client": None, + }) + extractor = FastAPIRequestInfoExtractor() + + assert extractor.get_remote_ip(request) == json_logging.EMPTY_VALUE + assert extractor.get_remote_port(request) == json_logging.EMPTY_VALUE From e6d236bd993e63e7d31de75927f30e712dc750ed Mon Sep 17 00:00:00 2001 From: "isfun.dev@gmail.com" Date: Tue, 16 Jun 2026 16:50:13 +0500 Subject: [PATCH 2/2] Address FastAPI client none review --- json_logging/framework/fastapi/implementation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json_logging/framework/fastapi/implementation.py b/json_logging/framework/fastapi/implementation.py index fdcf2ca..dca4644 100644 --- a/json_logging/framework/fastapi/implementation.py +++ b/json_logging/framework/fastapi/implementation.py @@ -111,12 +111,12 @@ def get_method(self, request: starlette.requests.Request): return request.method def get_remote_ip(self, request: starlette.requests.Request): - if request.client: + if request.client is not None: return request.client.host return json_logging.EMPTY_VALUE def get_remote_port(self, request: starlette.requests.Request): - if request.client: + if request.client is not None: return request.client.port return json_logging.EMPTY_VALUE