33 lines
1.0 KiB
Markdown
33 lines
1.0 KiB
Markdown
# 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 替代
|