fix: Include extra field for context log (#1535)

This commit is contained in:
V 2025-12-19 09:54:03 -08:00 • committed by GitHub
commit 06748eb4c4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1260,6 +1260,7 @@ class Context(BaseModel, Generic[ServerSessionT, LifespanContextT, RequestT]):
message: str,
*,
logger_name: str | None = None,
extra: dict[str, Any] | None = None,
) -> None:
"""Send a log message to the client.
@ -1267,11 +1268,20 @@ class Context(BaseModel, Generic[ServerSessionT, LifespanContextT, RequestT]):
level: Log level (debug, info, warning, error)
message: Log message
logger_name: Optional logger name
**extra: Additional structured data to include
extra: Optional dictionary with additional structured data to include
"""
if extra:
log_data = {
"message": message,
**extra,
}
else:
log_data = message
await self.request_context.session.send_log_message(
level=level,
data=message,
data=log_data,
logger=logger_name,
related_request_id=self.request_id,
)
@ -1326,18 +1336,20 @@ class Context(BaseModel, Generic[ServerSessionT, LifespanContextT, RequestT]):
await self._request_context.close_standalone_sse_stream()
# Convenience methods for common log levels
async def debug(self, message: str, **extra: Any) -> None:
async def debug(self, message: str, *, logger_name: str | None = None, extra: dict[str, Any] | None = None) -> None:
"""Send a debug log message."""
await self.log("debug", message, **extra)
await self.log("debug", message, logger_name=logger_name, extra=extra)
async def info(self, message: str, **extra: Any) -> None:
async def info(self, message: str, *, logger_name: str | None = None, extra: dict[str, Any] | None = None) -> None:
"""Send an info log message."""
await self.log("info", message, **extra)
await self.log("info", message, logger_name=logger_name, extra=extra)
async def warning(self, message: str, **extra: Any) -> None:
async def warning(
self, message: str, *, logger_name: str | None = None, extra: dict[str, Any] | None = None
) -> None:
"""Send a warning log message."""
await self.log("warning", message, **extra)
await self.log("warning", message, logger_name=logger_name, extra=extra)
async def error(self, message: str, **extra: Any) -> None:
async def error(self, message: str, *, logger_name: str | None = None, extra: dict[str, Any] | None = None) -> None:
"""Send an error log message."""
await self.log("error", message, **extra)
await self.log("error", message, logger_name=logger_name, extra=extra)