运行日志与秘密脱敏
说明
logx 是进程统一的诊断日志边界。它在标准库日志前添加四种文本级别之一,并在格式化后遮蔽常见凭据和 URL。网关、数据面、IAM、路由、目录、存储和供应商代码都调用它。这些日志是运行期诊断信息;持久审计记录与花费日志由独立业务链负责。
对外接口
Trace、Debug、Info、Error 都接收 fmt 风格格式串和参数,不返回值。Trace 标记细粒度执行,Debug 记录排障决策,Info 记录正常结果,Error 记录失败但不会结束进程。每次调用先格式化、再脱敏,最后用小写级别前缀写入 Go 标准 logger。本包不写 HTTP 响应,不返回错误,也不提供级别过滤、logger 注入或持久化接口。
内部核心实现
私有写入函数应用三类过滤。大小写不敏感的 Bearer 值替换为星号;符合 sk- 形式的令牌替换为星号;HTTP/HTTPS URL 经解析后只保留主机名,协议、路径、查询串、用户信息和端口都会丢弃。若无法解析出主机名,则隐藏整段匹配;解析时排除常见末尾标点。
脱敏只是基于模式的最后防线,并非完整秘密分类器。任意格式凭据、提示词、环境值或非 HTTP 连接串仍可能暴露,因此调用方应记录标识和阶段,避免传入原始秘密或正文。格式化发生在脱敏之前,时间戳和输出目的地由标准 logger 配置决定。
测试依赖
files_test.go 检查预期日志接口,并验证 Bearer、密钥、大小写变化和 URL 脱敏。运行 go test ./internal/util -count=1;测试读取仓库源码,但不需要外部服务。
源码职责与入口
log.go是唯一生产文件。公开入口为 Trace、Debug、Info、Error;私有写入和脱敏函数统一处理格式化与遮蔽。files_test.go固化日志级别和当前脱敏边界。