From 935f51a8b6a0933a7815d7e19e81101d7b030336 Mon Sep 17 00:00:00 2001 From: yucheng Date: Tue, 29 Sep 2026 08:24:14 +0000 Subject: [PATCH] refactor(logging): drop rebinding and comment in failure redaction Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- litellm/integrations/custom_logger.py | 12 +++++++----- litellm/litellm_core_utils/litellm_logging.py | 8 +++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/litellm/integrations/custom_logger.py b/litellm/integrations/custom_logger.py index 2f94eed4cbd..6f7c0d06724 100644 --- a/litellm/integrations/custom_logger.py +++ b/litellm/integrations/custom_logger.py @@ -9,7 +9,11 @@ from typing import TYPE_CHECKING, Any, ClassVar, Final, Optional, cast from pydantic import BaseModel from litellm._logging import verbose_logger -from litellm.constants import DEFAULT_MAX_RECURSE_DEPTH_SENSITIVE_DATA_MASKER, EMPTY_MAPPING +from litellm.constants import ( + DEFAULT_MAX_RECURSE_DEPTH_SENSITIVE_DATA_MASKER, + EMPTY_MAPPING, + REDACTED_BY_LITELLM, +) from litellm.types.integrations.argilla import ArgillaItem from litellm.types.integrations.custom_logger import AgenticLoopPlan from litellm.types.llms.openai import AllMessageValues, ChatCompletionRequest @@ -962,10 +966,8 @@ class CustomLogger: # https://docs.litellm.ai/docs/observability/custom_callbac standard_logging_object_copy["response"] = model_response_dict if turn_off_message_logging: - # Error text can quote the prompt; callbacks never scrub it themselves, - # so redact it regardless of `redacts_messages_itself`. if standard_logging_object_copy.get("error_str"): - standard_logging_object_copy["error_str"] = "redacted-by-litellm" + standard_logging_object_copy["error_str"] = REDACTED_BY_LITELLM error_information: Final = standard_logging_object_copy.get("error_information") if isinstance(error_information, Mapping): from litellm.litellm_core_utils.redact_messages import redact_error_information @@ -982,7 +984,7 @@ class CustomLogger: # https://docs.litellm.ai/docs/observability/custom_callbac else EMPTY_MAPPING ) redacted_failure_fields: Final = ( - MappingProxyType({"traceback_exception": "redacted-by-litellm"}) + MappingProxyType({"traceback_exception": REDACTED_BY_LITELLM}) if turn_off_message_logging and model_call_details.get("traceback_exception") else EMPTY_MAPPING ) diff --git a/litellm/litellm_core_utils/litellm_logging.py b/litellm/litellm_core_utils/litellm_logging.py index a25c214af75..37a6b5c1e30 100644 --- a/litellm/litellm_core_utils/litellm_logging.py +++ b/litellm/litellm_core_utils/litellm_logging.py @@ -3900,11 +3900,9 @@ class Logging(LiteLLMLoggingBaseClass): global_callbacks=litellm._async_failure_callback, ) - result: object = None # result sent to all loggers, init this to None incase it's not created - - result = redact_message_input_output_from_logging( - model_call_details=(self.model_call_details if hasattr(self, "model_call_details") else {}), - result=result, + result: Final = redact_message_input_output_from_logging( + model_call_details=self.model_call_details, + result=None, ) self.has_run_logging(event_type="async_failure") for callback in callbacks: