diff --git a/vllm/entrypoints/serve/engine/serving.py b/vllm/entrypoints/serve/engine/serving.py index 7a1befbe4c..86ba524946 100644 --- a/vllm/entrypoints/serve/engine/serving.py +++ b/vllm/entrypoints/serve/engine/serving.py @@ -41,6 +41,9 @@ class BaseServing: self, request: AnyRequest | AnyPoolingRequest, ) -> ErrorResponse | None: + if self.request_logger is not None: + self.request_logger.log_request_body(request) + error_response = None if self._is_model_supported(request.model): diff --git a/vllm/entrypoints/serve/utils/request_logger.py b/vllm/entrypoints/serve/utils/request_logger.py index ac10feab10..efea243182 100644 --- a/vllm/entrypoints/serve/utils/request_logger.py +++ b/vllm/entrypoints/serve/utils/request_logger.py @@ -6,6 +6,8 @@ from collections.abc import Sequence import torch +from vllm.entrypoints.pooling.typing import AnyPoolingRequest +from vllm.entrypoints.serve.engine.typing import AnyRequest from vllm.logger import init_logger from vllm.lora.request import LoRARequest from vllm.pooling_params import PoolingParams @@ -67,6 +69,15 @@ class RequestLogger: lora_request, ) + def log_request_body(self, request: AnyRequest | AnyPoolingRequest) -> None: + if logger.isEnabledFor(logging.DEBUG): + max_log_len = self.max_log_len if self.max_log_len is not None else -1 + logger.debug( + "Request %s JSON body: %s", + getattr(request, "request_id", "N/A"), + request.model_dump_json(exclude_unset=True)[:max_log_len], + ) + def log_outputs( self, request_id: str,