44
55from fastapi import Request , Response
66from fastapi .responses import PlainTextResponse
7- from hypercorn .logging import AccessLogAtoms
87from loguru import logger
98
109from . import config
@@ -27,26 +26,20 @@ async def log_request_middleware(request: Request, call_next: Callable) -> Respo
2726 response = PlainTextResponse ('Internal Server Error' , status_code = 500 )
2827 final_time = time ()
2928 elapsed = final_time - start_time
30- response_dict = {
31- 'status' : response .status_code ,
32- 'headers' : response .headers .raw ,
33- }
34- atoms = AccessLogAtoms (request , response_dict , final_time ) # type: ignore
35- try :
36- response_length = int (atoms ['B' ])
37- except ValueError :
38- response_length = 0
29+ response_length = request .headers .get ('content-length' , 0 )
30+ query_string = request ['query_string' ].decode ()
31+ path_with_qs = request ['path' ] + ('?' + query_string if query_string else '' )
3932 data = {
40- 'remote_ip' : request .headers .get ('x-forwarded-for' ) or atoms [ 'h ' ],
41- 'schema' : request .headers .get ('x-forwarded-proto' ) or atoms [ 'S ' ],
42- 'protocol' : atoms [ 'H' ] ,
43- 'method' : atoms [ 'm' ] ,
44- 'path_with_query' : atoms [ 'Uq' ] ,
33+ 'remote_ip' : request .headers .get ('x-forwarded-for' ) or request [ 'client ' ],
34+ 'schema' : request .headers .get ('x-forwarded-proto' ) or request [ 'scheme ' ],
35+ 'protocol' : request . get ( 'http_version' , 'ws' ) ,
36+ 'method' : request . get ( 'method' , 'GET' ) ,
37+ 'path_with_query' : path_with_qs ,
4538 'status_code' : response .status_code ,
4639 'response_length' : response_length ,
4740 'elapsed' : elapsed ,
48- 'referer' : atoms [ 'f' ] ,
49- 'user_agent' : atoms [ 'a' ] ,
41+ 'referer' : request . headers . get ( 'referer' , '' ) ,
42+ 'user_agent' : request . headers . get ( 'user-agent' , '' ) ,
5043 }
5144 if not exception :
5245 logger .info ('log request' , ** data )
0 commit comments