1
0
Files
nex/openspec/changes/backend-code-lint/specs/module-logging/spec.md

33 lines
1.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 替代