Go 代码规范见 AGENTS.md。本库是该规范的实现示例。
| 包 | 说明 |
|---|---|
| lifecycle | 进程退出分阶段清理钩子 |
| log | slog Handler 构建与装饰;打日志用 slog |
| log/file | 按大小轮转的文件 Writer |
| log/extractor/otel | OpenTelemetry context attrs 抽取 |
import "github.com/zhuud/boot/lifecycle"
lifecycle.Register(http.Stop, lifecycle.Drain(), lifecycle.Async())
lifecycle.RegisterCloser(db)
lifecycle.Register(flush, lifecycle.Async())
// 有 App:关闭强杀,由框架 stop 调用 Cleanup
lifecycle.SetTimeout(0)
// 无 App:Listen + Done;超时强杀兜底
lifecycle.Listen()
<-lifecycle.Done()完整说明见 lifecycle/README.md。
import (
"log/slog"
"github.com/zhuud/boot/log"
)
log.SetSlogDefault("helloworld", env)
ctx = log.ContextWithAttrs(ctx, slog.String("request_id", id))
slog.InfoContext(ctx, "user created", "user_id", userId)完整说明见 log/README.md。
通用命名、错误、并发、测试见 AGENTS.md。本库额外固定:
- slog 装饰链(Option 传入顺序无关):
AttrGroup → Context → Redact → Drop → Sampling → Truncate → ErrorFunc → Base - 不暴露
ReplaceAttr;source 走WithSource next == nil时panic("nil log handler");功能关闭直接返回next
gofmt -s -w .
go vet ./...
go test ./...
go test -race ./...
go test -bench=. -benchmem ./...