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

23
logger.go Normal file
View file

@ -0,0 +1,23 @@
// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
// Copyright 2024 WJQSERVER. All rights reserved.
// All rights reserved by WJQSERVER, related rights can be exercised by the infinite-iroha organization.
package touka
// Logger 是日志接口支持多种日志库实现reco、zap、logrus 等)
// 用户可以通过实现此接口来替换默认的日志实现
type Logger interface {
Debugf(format string, args ...any)
Infof(format string, args ...any)
Warnf(format string, args ...any)
Errorf(format string, args ...any)
Fatalf(format string, args ...any)
Panicf(format string, args ...any)
}
// CloserLogger 可选扩展接口,支持关闭操作
// 如果 Logger 实现了此接口Engine 在关闭时会调用 Close()
type CloserLogger interface {
Logger
Close() error
}