执行摘要
该PR为Rust网关(sgl-model-gateway)的日志系统添加了对SGLANG_LOG_MS环境变量的支持,允许用户启用毫秒级时间戳精度,从而与Python SRT的现有行为对齐。变更仅涉及单个文件的日志格式配置,风险低,影响范围有限,属于常规的功能增强。
功能与动机
主要动机是统一Rust网关和Python SRT的日志行为,如PR body所述:"matching the existing Python SRT behavior (PR #14183)"。当用户设置SGLANG_LOG_MS=true(或1)时,日志时间戳将从"2026-04-10 06:35:37"变为"2026-04-10 06:35:37.313",提供更精细的时间信息,便于调试和性能分析。
实现拆解
所有变更集中在sgl-model-gateway/src/observability/logging.rs文件中:
-
新增时间格式常量:
rust
const TIME_FORMAT_MS: &str = "%Y-%m-%d %H:%M:%S%.3f";
-
新增格式选择函数:
rust
fn get_time_format() -> &'static str {
match std::env::var("SGLANG_LOG_MS") {
Ok(v) if matches!(v.trim().to_lowercase().as_str(), "true" | "1") => TIME_FORMAT_MS,
_ => TIME_FORMAT,
}
}
-
修改日志初始化:在init_logging函数中,将原先硬编码的TIME_FORMAT替换为get_time_format()的返回值,并同时应用到stdout_layer和file_layer。
评论区精华
review中仅有一次实质性讨论:
gemini-code-assist[bot] 指出:"The environment variable check is currently case-sensitive and only accepts exact matches for 'true' or '1'. For better usability and robustness, it's recommended to handle case-insensitivity (e.g., 'TRUE', 'True') and potentially trim whitespace."
该建议提供了具体的代码改进方案,但PR作者在最终提交中未采纳,保持了原有的简单实现。
风险与影响
风险分析:
- 环境变量解析逻辑相对简单,对大小写敏感,可能导致某些配置下功能不生效(如用户设置
"TRUE")。
- 变更仅影响日志格式,不涉及核心业务逻辑,回归风险极低。
- 无新增测试覆盖,但日志格式变更通常不需要复杂测试。
影响评估:
- 对用户:提供了可选的毫秒级时间戳,增强调试能力,但需显式设置环境变量。
- 对系统:仅改变日志输出格式,不影响网关的路由、推理等核心功能。
- 对团队:统一了Rust网关和Python SRT的日志行为,减少了跨组件调试时的差异。
关联脉络
根据PR body提及,该PR是为了与PR #14183(Python SRT的日志行为)保持一致,体现了项目在跨组件(Rust网关 vs Python SRT)可观测性行为统一上的持续努力。从近期历史PR看,项目在observability领域有多项改进(如PR 22331、22730),该PR是这一趋势的延续。
参与讨论