feat: 引入 Logger 接口抽象,支持自定义日志实现

- 新增 Logger 接口定义,支持 zap/slog 等自定义实现
- 新增 CloserLogger 接口用于支持关闭操作
- Engine 新增 SetLogger/GetLogger 方法使用接口
- 新增 compat.go 兼容层,保留 reco 兼容方法
- 新增 slog 适配器示例
- 删除 zap 示例
- Context.GetLogger() 返回接口类型
This commit is contained in:
wjqserver 2026-04-21 19:43:56 +08:00
parent 58fd877ae2
commit c8b14ef43a
7 changed files with 575 additions and 17 deletions

View file

@ -39,7 +39,16 @@ func CloseLogger(logger *reco.Logger) {
}
}
// CloseLogger 关闭 Engine 的日志实现
// 如果 logger 实现了 CloserLogger 接口,会调用其 Close 方法
func (engine *Engine) CloseLogger() {
if cl, ok := engine.logger.(CloserLogger); ok {
if err := cl.Close(); err != nil {
log.Printf("Close Logger Error: %s", err)
}
return
}
// 兼容旧代码
if engine.LogReco != nil {
CloseLogger(engine.LogReco)
}