文档首页/运行日志与秘密脱敏

运行日志与秘密脱敏

说明

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 固化日志级别和当前脱敏边界。

输入关键词搜索全文,例如:预算、路由、Docker