fix move s3 to use customLogger

This commit is contained in:
Ishaan Jaff 2024-10-11 13:55:34 +05:30
parent d28c6b390c
commit 41e534db71
3 changed files with 19 additions and 43 deletions

View file

@ -13,8 +13,10 @@ import litellm
from litellm._logging import print_verbose, verbose_logger from litellm._logging import print_verbose, verbose_logger
from litellm.types.utils import StandardLoggingPayload from litellm.types.utils import StandardLoggingPayload
from .custom_logger import CustomLogger
class S3Logger:
class S3Logger(CustomLogger):
# Class variables or attributes # Class variables or attributes
def __init__( def __init__(
self, self,
@ -84,12 +86,7 @@ class S3Logger:
print_verbose(f"Got exception on init s3 client {str(e)}") print_verbose(f"Got exception on init s3 client {str(e)}")
raise e raise e
async def _async_log_event( async def async_log_success_event(self, kwargs, response_obj, start_time, end_time):
self, kwargs, response_obj, start_time, end_time, print_verbose
):
self.log_event(kwargs, response_obj, start_time, end_time, print_verbose)
def log_event(self, kwargs, response_obj, start_time, end_time, print_verbose):
try: try:
verbose_logger.debug( verbose_logger.debug(
f"s3 Logging - Enters logging function for model {kwargs}" f"s3 Logging - Enters logging function for model {kwargs}"

View file

@ -116,7 +116,6 @@ lagoLogger = None
dataDogLogger = None dataDogLogger = None
prometheusLogger = None prometheusLogger = None
dynamoLogger = None dynamoLogger = None
s3Logger = None
genericAPILogger = None genericAPILogger = None
clickHouseLogger = None clickHouseLogger = None
greenscaleLogger = None greenscaleLogger = None
@ -1346,36 +1345,6 @@ class Logging:
user_id=kwargs.get("user", None), user_id=kwargs.get("user", None),
print_verbose=print_verbose, print_verbose=print_verbose,
) )
if callback == "s3":
global s3Logger
if s3Logger is None:
s3Logger = S3Logger()
if self.stream:
if "complete_streaming_response" in self.model_call_details:
print_verbose(
"S3Logger Logger: Got Stream Event - Completed Stream Response"
)
s3Logger.log_event(
kwargs=self.model_call_details,
response_obj=self.model_call_details[
"complete_streaming_response"
],
start_time=start_time,
end_time=end_time,
print_verbose=print_verbose,
)
else:
print_verbose(
"S3Logger Logger: Got Stream Event - No complete stream response as yet"
)
else:
s3Logger.log_event(
kwargs=self.model_call_details,
response_obj=result,
start_time=start_time,
end_time=end_time,
print_verbose=print_verbose,
)
if ( if (
callback == "openmeter" callback == "openmeter"
and self.model_call_details.get("litellm_params", {}).get( and self.model_call_details.get("litellm_params", {}).get(
@ -2245,7 +2214,7 @@ def set_callbacks(callback_list, function_id=None):
""" """
Globally sets the callback client Globally sets the callback client
""" """
global sentry_sdk_instance, capture_exception, add_breadcrumb, posthog, slack_app, alerts_channel, traceloopLogger, athinaLogger, heliconeLogger, aispendLogger, berrispendLogger, supabaseClient, liteDebuggerClient, lunaryLogger, promptLayerLogger, langFuseLogger, customLogger, weightsBiasesLogger, logfireLogger, dynamoLogger, s3Logger, dataDogLogger, prometheusLogger, greenscaleLogger, openMeterLogger global sentry_sdk_instance, capture_exception, add_breadcrumb, posthog, slack_app, alerts_channel, traceloopLogger, athinaLogger, heliconeLogger, aispendLogger, berrispendLogger, supabaseClient, liteDebuggerClient, lunaryLogger, promptLayerLogger, langFuseLogger, customLogger, weightsBiasesLogger, logfireLogger, dynamoLogger, dataDogLogger, prometheusLogger, greenscaleLogger, openMeterLogger
try: try:
for callback in callback_list: for callback in callback_list:
@ -2319,8 +2288,6 @@ def set_callbacks(callback_list, function_id=None):
dataDogLogger = DataDogLogger() dataDogLogger = DataDogLogger()
elif callback == "dynamodb": elif callback == "dynamodb":
dynamoLogger = DyanmoDBLogger() dynamoLogger = DyanmoDBLogger()
elif callback == "s3":
s3Logger = S3Logger()
elif callback == "wandb": elif callback == "wandb":
weightsBiasesLogger = WeightsBiasesLogger() weightsBiasesLogger = WeightsBiasesLogger()
elif callback == "logfire": elif callback == "logfire":
@ -2423,6 +2390,14 @@ def _init_custom_logger_compatible_class(
_datadog_logger = DataDogLogger() _datadog_logger = DataDogLogger()
_in_memory_loggers.append(_datadog_logger) _in_memory_loggers.append(_datadog_logger)
return _datadog_logger # type: ignore return _datadog_logger # type: ignore
elif logging_integration == "s3":
for callback in _in_memory_loggers:
if isinstance(callback, S3Logger):
return callback # type: ignore
_s3_logger = S3Logger()
_in_memory_loggers.append(_s3_logger)
return _s3_logger # type: ignore
elif logging_integration == "gcs_bucket": elif logging_integration == "gcs_bucket":
for callback in _in_memory_loggers: for callback in _in_memory_loggers:
if isinstance(callback, GCSBucketLogger): if isinstance(callback, GCSBucketLogger):
@ -2564,6 +2539,10 @@ def get_custom_logger_compatible_class(
for callback in _in_memory_loggers: for callback in _in_memory_loggers:
if isinstance(callback, PrometheusLogger): if isinstance(callback, PrometheusLogger):
return callback return callback
elif logging_integration == "s3":
for callback in _in_memory_loggers:
if isinstance(callback, S3Logger):
return callback
elif logging_integration == "datadog": elif logging_integration == "datadog":
for callback in _in_memory_loggers: for callback in _in_memory_loggers:
if isinstance(callback, DataDogLogger): if isinstance(callback, DataDogLogger):

View file

@ -197,7 +197,6 @@ lagoLogger = None
dataDogLogger = None dataDogLogger = None
prometheusLogger = None prometheusLogger = None
dynamoLogger = None dynamoLogger = None
s3Logger = None
genericAPILogger = None genericAPILogger = None
clickHouseLogger = None clickHouseLogger = None
greenscaleLogger = None greenscaleLogger = None
@ -1799,8 +1798,9 @@ def calculate_tiles_needed(
total_tiles = tiles_across * tiles_down total_tiles = tiles_across * tiles_down
return total_tiles return total_tiles
def get_image_type(image_data: bytes) -> Union[str, None]: def get_image_type(image_data: bytes) -> Union[str, None]:
""" take an image (really only the first ~100 bytes max are needed) """take an image (really only the first ~100 bytes max are needed)
and return 'png' 'gif' 'jpeg' 'heic' or None. method added to and return 'png' 'gif' 'jpeg' 'heic' or None. method added to
allow deprecation of imghdr in 3.13""" allow deprecation of imghdr in 3.13"""