This commit is contained in:
24
webserver.py
24
webserver.py
@@ -387,13 +387,32 @@ class SnapshotsWebServer:
|
||||
async def logging_middleware(request, handler):
|
||||
start_time = datetime.now()
|
||||
|
||||
# Get client IP address
|
||||
def get_client_ip():
|
||||
# Check for forwarded header first
|
||||
forwarded = request.headers.get("X-Forwarded-For")
|
||||
if forwarded:
|
||||
return forwarded.split(",")[0].strip()
|
||||
|
||||
# Try to get from transport
|
||||
try:
|
||||
if request.transport:
|
||||
peername = request.transport.get_extra_info("peername")
|
||||
if peername:
|
||||
return peername[0]
|
||||
except:
|
||||
pass
|
||||
|
||||
return "unknown"
|
||||
|
||||
try:
|
||||
response = await handler(request)
|
||||
|
||||
# Log the request
|
||||
duration = (datetime.now() - start_time).total_seconds()
|
||||
remote_addr = get_client_ip()
|
||||
self.logger.info(
|
||||
f"{request.remote} - {request.method} {request.path} - "
|
||||
f"{remote_addr} - {request.method} {request.path} - "
|
||||
f"{response.status} - {duration:.3f}s"
|
||||
)
|
||||
|
||||
@@ -401,8 +420,9 @@ class SnapshotsWebServer:
|
||||
|
||||
except Exception as e:
|
||||
duration = (datetime.now() - start_time).total_seconds()
|
||||
remote_addr = get_client_ip()
|
||||
self.logger.error(
|
||||
f"{request.remote} - {request.method} {request.path} - "
|
||||
f"{remote_addr} - {request.method} {request.path} - "
|
||||
f"ERROR: {e} - {duration:.3f}s"
|
||||
)
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user