Prhub

#22506 [gateway] Support SGLANG_LOG_MS for millisecond precision in router logs

原始 PR 作者 ZhaiFeiyue 合并时间 2026-04-14 08:28 文件变更 1 提交数 2 评论 3 代码增减 +12 / -2

执行摘要

为 Rust 网关添加毫秒级日志时间戳支持,与 Python SRT 行为对齐。

根据PR body的描述,主要动机是"matching the existing Python SRT behavior (PR #14183)",即让Rust网关的日志时间戳精度与Python SRT保持一致。当SGLANG_LOG_MS=true(或1)时,日志时间戳从"2026-04-10 06:35:37"变为"2026-04-10 06:35:37.313",提供更精细的时间信息。

该PR变更简单直接,适合快速了解环境变量控制日志格式的模式。值得关注的是review中提到的环境变量解析健壮性问题,虽然当前实现已满足基本需求,但在生产环境中可能需要更严格的错误处理。

讨论亮点

review中只有gemini-code-assist[bot]提出了一个改进建议:当前环境变量检查对大小写敏感且只接受"true"或"1"的精确匹配,建议增强健壮性,处理大小写不敏感和去除空白字符。该建议提供了具体的代码实现方案,但PR作者未在提交中采纳此建议。HaiShaw仅进行了批准操作并请求另一位reviewer查看。

实现拆解

实现集中在单个文件sgl-model-gateway/src/observability/logging.rs中:

  1. 新增常量TIME_FORMAT_MS定义毫秒级时间格式"%Y-%m-%d %H:%M:%S%.3f";
  2. 新增get_time_format()函数,通过检查SGLANG_LOG_MS环境变量值(支持"true"或"1")动态选择时间格式;
  3. 修改init_logging函数,将原先硬编码的TIME_FORMAT替换为通过get_time_format()获取的动态格式,同时应用到stdout_layer和file_layer两个日志层。
文件 模块 状态 重要度
sgl-model-gateway/src/observability/logging.rs gateway/observability modified 8.0

关键符号

get_time_format() init_logging

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

环境变量解析的健壮性 正确性

gemini-code-assist[bot] 指出当前环境变量检查对大小写敏感且只接受精确匹配,建议增强为大小写不敏感并去除空白字符。

结论:建议未被采纳,PR 保持原有实现。 · 已解决

风险与影响

风险较低:

  1. 核心变更仅涉及日志格式,不影响业务逻辑;
  2. 环境变量检查逻辑相对简单,但如review建议所指出的,当前实现对大小写敏感,可能导致某些环境配置下功能不生效(如用户设置"TRUE"或"True");
  3. 新增函数get_time_format()在每次日志初始化时调用一次,性能开销可忽略;
  4. 无测试覆盖变更,但日志格式变更通常不需要复杂测试。

影响范围有限:

  1. 对用户:提供了更精细的日志时间戳选项,便于调试和监控,但需要显式设置环境变量才能生效;
  2. 对系统:仅改变日志输出格式,不影响网关的核心路由、推理等业务功能;
  3. 对团队:统一了Rust网关和Python SRT的日志行为,减少了跨组件调试时的认知负担。
环境变量解析限制

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论