# Module Logging — Delta ## MODIFIED Requirements ### Requirement: 禁止全局 logger 系统 SHALL 禁止在业务代码中使用全局 logger,并通过 lint 工具强制执行。 #### Scenario: 移除 zap.L() 调用 - **WHEN** 重构现有代码 - **THEN** SHALL 移除所有 `zap.L()` 调用 - **THEN** SHALL 通过构造函数注入 logger - **THEN** 允许仅在测试代码中使用 `zap.L()` 或 `zap.NewNop()` #### Scenario: 移除 zap.L() fallback - **WHEN** 构造函数 logger 参数为 nil - **THEN** SHALL NOT 使用 `zap.L()` 作为默认值 - **THEN** 调用方 SHALL 必须传入有效的 logger #### Scenario: lint 自动拦截 zap.L() - **WHEN** 正式代码中新增 `zap.L()` 调用 - **THEN** forbidigo SHALL 检测并报错 - **THEN** git commit SHALL 被拒绝 #### Scenario: 禁止 fmt/os.Stderr 直接输出 - **WHEN** 正式代码中使用 fmt.Print*、fmt.Fprintf(os.Stderr, ...) 等直接输出 - **THEN** forbidigo SHALL 检测并报错 - **THEN** SHALL 使用注入的 zap logger 替代