![[Bug]: Session trace sidebar in Log Details drawer silently truncates to first 50 entries](https://www.chat-gpts.plus/wp-content/uploads/2026/06/28224-6e4c60a5.jpg)
[Bug]: Session trace sidebar in Log Details drawer silently truncates to first 50 entries
快速结论:该问题出现在 LiteLLM 仪表盘的 Logs 页面,当您通过 session_id 打开 Log Details 抽屉时,左侧的 Session trace 侧边栏仅显示前 50 条日志记录,其余日志被静默丢弃,且无任何分页提示或导航控件。优先检查前端代码 sessionSpendLogsCall 是否传递了分页参数,并确认 LogDetailsDrawer 组件是否处理了 total_pages 字段。
问题场景
该问题出现在 LiteLLM 的 UI 仪表盘中。当用户在 Logs 标签页中点击包含 session_id 的日志行时,右侧会打开 Log Details 抽屉。左侧的 Session 侧边栏会展示该 session_id 对应的所有消费日志。对于包含超过 50 条日志的长会话(例如大量的工具/ MCP 调用链或多轮对话),侧边栏仅显示最早产生的 50 条记录,无法加载后续条目。
报错原文
# DevTools → Network → /spend/logs/session/ui?session_id=
# Request URL has no page/page_size params.
# Response (truncated):
{
"data": [ ... 50 items ordered by startTime ASC ... ],
"total": 137,
"page": 1,
"page_size": 50,
"total_pages": 3
}
原因分析
根本原因在前端,而非后端。后端接口 GET /spend/logs/session/ui 已支持分页(page、page_size 参数,并返回 total、total_pages 字段),默认 page_size=50,最大 100,按 startTime ASC 排序。但是,前端辅助函数 sessionSpendLogsCall(位于 ui/litellm-dashboard/src/components/networking.tsx)在调用该接口时未传递任何分页参数,因此始终只获取第 1 页(即最早 50 条)。组件 LogDetailsDrawer 直接消费 response.data,未读取 total_pages 字段,因此无分页控件的展示。
环境排查
- 确认 LiteLLM 版本 (该问题在 v1.86.0 及后续版本中出现,v1.88.0-rc.1 用户也报告了相同问题)。
- 确认
store_prompts_in_spend_logs是否启用(问题在启用时更明显,但非必需)。 - 确认后端接口
/spend/logs/session/ui是否能返回total_pages大于 1 的响应。
解决步骤
- 升级到修复版本: 该问题已在
litellm_internal_staging分支(默认分支)中修复,合并于提交3b40ac987f(通过 PR #30021)。建议升级至包含该修复的标签版本;如果使用固定版本(例如 v1.86.1),请等待官方发布。 - 如果无法升级,可尝试后端临时方案: 修改
spend_management_endpoints.py中的ui_view_session_spend_logs端点,提高page_size的默认值(默认为 50,上限 le=100),将上限调高至 100,使单次请求即可返回整条会话的全部日志(注意这会增加一次 API 返回的数据量)。 - 前端代码修复(供参考):
- 修改
sessionSpendLogsCall,使其接受page/page_size参数。 - 修改
LogDetailsDrawer.tsx,在首次获取第 1 页后,读取total_pages,并遍历获取后续所有页面,将结果累积(当前实现的上限为SESSION_PAGE_SIZE=100 × MAX_SESSION_PAGES=50 = 5,000条日志)。
- 修改
验证方法
打开包含超过 50 条日志的会话的 Log Details 抽屉,确认左侧 Session 侧边栏能够完整显示所有日志条目(通过滚动或分页控件导航),且不再出现数据静默截断。同时检查 DevTools 网络请求,确认 /spend/logs/session/ui 请求中包含了正确的 page 参数,或响应中的 total_pages 被正确使用。



