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,6 +1798,7 @@ 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