11import logging
22import litellm
33from datetime import datetime
4+ from litellm .integrations .custom_logger import CustomLogger
5+
46
57logger = logging .getLogger (__name__ )
68
79
8- class MyCustomHandler :
10+ class MyCustomHandler ( CustomLogger ) :
911 def __init__ (self ):
1012 self .prefix = "LiteLLM"
1113
@@ -17,30 +19,13 @@ def _format_time(self, dt: datetime) -> str:
1719 def log_pre_api_call (self , model , messages , kwargs ):
1820 pass
1921
22+ # async func won't trigger this callback, it's a bug. https://github.com/BerriAI/litellm/issues/8842
2023 def log_success_event (self , kwargs , response_obj , start_time , end_time ):
21- try :
22- latency = (end_time - start_time ).total_seconds () if start_time and end_time else 0.0
23- cost = kwargs .get ("response_cost" , 0 )
24-
25- logger .info (f"{ self .prefix } Status: Success" )
26- logger .info (f"{ self .prefix } Model: { kwargs .get ('model' )} " )
27- logger .info (f"{ self .prefix } Provider: { kwargs .get ('custom_llm_provider' , 'unknown' )} " )
28- logger .info (f"{ self .prefix } Start Time: { self ._format_time (start_time )} " )
29- logger .info (f"{ self .prefix } End Time: { self ._format_time (end_time )} " )
30- logger .info (f"{ self .prefix } Latency: { latency :.2f} seconds" )
31- logger .info (f"{ self .prefix } Cost: ${ cost :.6f} " )
32- except Exception as e :
33- logger .error (f"{ self .prefix } Error in log_success_event" , exc_info = e )
24+ pass
3425
3526 def log_failure_event (self , kwargs , response_obj , start_time , end_time ):
3627 try :
3728 error_str = str (response_obj ) if response_obj else "Unknown error"
38-
39- logger .error (f"{ self .prefix } Status: Failed" )
40- logger .error (f"{ self .prefix } Model: { kwargs .get ('model' )} " )
41- logger .error (f"{ self .prefix } Provider: { kwargs .get ('custom_llm_provider' , 'unknown' )} " )
42- logger .error (f"{ self .prefix } Start Time: { self ._format_time (start_time )} " )
43- logger .error (f"{ self .prefix } End Time: { self ._format_time (end_time )} " )
4429 logger .error (f"{ self .prefix } Error: { error_str } " , exc_info = True )
4530 except Exception as e :
4631 logger .error (f"{ self .prefix } Error in log_failure_event" , exc_info = e )
@@ -52,7 +37,19 @@ async def async_log_failure_event(self, kwargs, response_obj, start_time, end_ti
5237 self .log_failure_event (kwargs , response_obj , start_time , end_time )
5338
5439 def log_post_api_call (self , kwargs , response_obj , start_time , end_time ):
55- pass
40+ try :
41+ latency = (end_time - start_time ).total_seconds () if start_time and end_time else 0.0
42+ cost = kwargs .get ("response_cost" , 0 ) or 0
43+
44+ logger .info (f"{ self .prefix } Model: { kwargs .get ('model' )} " )
45+ logger .info (f"{ self .prefix } Provider: { kwargs .get ('custom_llm_provider' , 'unknown' )} " )
46+ logger .info (f"{ self .prefix } base_url: { kwargs .get ('api_base' , 'unknown' )} " )
47+ logger .info (f"{ self .prefix } Start Time: { self ._format_time (start_time )} " )
48+ logger .info (f"{ self .prefix } End Time: { self ._format_time (end_time )} " )
49+ logger .info (f"{ self .prefix } Latency: { latency :.2f} seconds" )
50+ logger .info (f"{ self .prefix } Cost: ${ cost :.6f} " )
51+ except Exception as e :
52+ logger .error (f"{ self .prefix } Error in log_success_event" , exc_info = e )
5653
5754
5855def register_llm_track ():
0 commit comments