66
77from log_firehose import FirehoseLogger
88
9+ from models .utils .validation_utils import get_vaccine_type
10+
911logging .basicConfig ()
1012logger = logging .getLogger ()
1113logger .setLevel ("INFO" )
1214
1315
1416firehose_logger = FirehoseLogger ()
1517
18+ def _log_data_from_body (event ) -> dict :
19+ log_data = {}
20+ if event .get ("body" ) is None :
21+ return log_data
22+ try :
23+ imms = json .loads (event ["body" ])
24+ except json .decoder .JSONDecodeError :
25+ return log_data
26+ try :
27+ vaccine_type = get_vaccine_type (imms )
28+ log_data ["vaccine_type" ] = vaccine_type
29+ except Exception :
30+ pass
31+ try :
32+ local_id = imms ["identifier" ][0 ]["value" ] + "^" + imms ["identifier" ][0 ]["system" ]
33+ log_data ["local_id" ] = local_id
34+ except Exception :
35+ pass
36+ return log_data
37+
1638
1739def function_info (func ):
1840 """This decorator prints the execution information for the decorated function."""
1941
2042 @wraps (func )
2143 def wrapper (* args , ** kwargs ):
2244 event = args [0 ] if args else {}
23- print (f"Event: { event } " )
45+ logger . info (f"Event: { event } " )
2446 headers = event .get ("headers" , {})
2547 correlation_id = headers .get ("X-Correlation-ID" , "X-Correlation-ID not passed" )
2648 request_id = headers .get ("X-Request-ID" , "X-Request-ID not passed" )
49+ supplier_system = headers .get ("SupplierSystem" , "SupplierSystem not passed" )
2750 actual_path = event .get ("path" , "Unknown" )
2851 resource_path = event .get ("requestContext" , {}).get ("resourcePath" , "Unknown" )
2952 logger .info (f"Starting { func .__name__ } with X-Correlation-ID: { correlation_id } and X-Request-ID: { request_id } " )
@@ -32,6 +55,7 @@ def wrapper(*args, **kwargs):
3255 "date_time" : str (datetime .now ()),
3356 "X-Correlation-ID" : correlation_id ,
3457 "X-Request-ID" : request_id ,
58+ "supplier" : supplier_system ,
3559 "actual_path" : actual_path ,
3660 "resource_path" : resource_path ,
3761 }
@@ -40,9 +64,10 @@ def wrapper(*args, **kwargs):
4064 start = time .time ()
4165 try :
4266 result = func (* args , ** kwargs )
43- print (f"Result:{ result } " )
67+ logger . info (f"Result:{ result } " )
4468 end = time .time ()
4569 log_data ["time_taken" ] = f"{ round (end - start , 5 )} s"
70+ log_data .update (_log_data_from_body (event ))
4671 status = "500"
4772 status_code = "Exception"
4873 diagnostics = str ()
@@ -56,7 +81,7 @@ def wrapper(*args, **kwargs):
5681 record = result_headers ["Location" ]
5782 if result .get ("body" ):
5883 ops_outcome = json .loads (result ["body" ])
59- print (f"ops_outcome: { ops_outcome } " )
84+ logger . info (f"ops_outcome: { ops_outcome } " )
6085 if ops_outcome .get ("issue" ):
6186 outcome_body = ops_outcome ["issue" ][0 ]
6287 status_code = outcome_body ["code" ]
@@ -78,6 +103,7 @@ def wrapper(*args, **kwargs):
78103 log_data ["error" ] = str (e )
79104 end = time .time ()
80105 log_data ["time_taken" ] = f"{ round (end - start , 5 )} s"
106+ log_data .update (_log_data_from_body (event ))
81107 logger .exception (json .dumps (log_data ))
82108 firehose_log ["event" ] = log_data
83109 firehose_logger .send_log (firehose_log )
0 commit comments