mirror of
https://github.com/infinite-iroha/touka.git
synced 2026-06-13 15:47:38 +08:00
feat: 引入 Logger 接口抽象,支持自定义日志实现
- 新增 Logger 接口定义,支持 zap/slog 等自定义实现 - 新增 CloserLogger 接口用于支持关闭操作 - Engine 新增 SetLogger/GetLogger 方法使用接口 - 新增 compat.go 兼容层,保留 reco 兼容方法 - 新增 slog 适配器示例 - 删除 zap 示例 - Context.GetLogger() 返回接口类型
This commit is contained in:
parent
58fd877ae2
commit
c8b14ef43a
7 changed files with 575 additions and 17 deletions
29
engine.go
29
engine.go
|
|
@ -52,8 +52,14 @@ type Engine struct {
|
|||
|
||||
HTTPClient *httpc.Client // 用于在此上下文中执行出站 HTTP 请求
|
||||
|
||||
// LogReco 保留的 reco.Logger 字段
|
||||
// Deprecated: 使用 SetLogger/GetLogger 替代
|
||||
LogReco *reco.Logger
|
||||
|
||||
// logger 是新的日志接口,支持任意 Logger 实现
|
||||
// 优先级: logger > LogReco
|
||||
logger Logger
|
||||
|
||||
HTMLRender any // 用于 HTML 模板渲染,可以设置为 *template.Template 或自定义渲染器接口
|
||||
|
||||
routesInfo []RouteInfo // 存储所有注册的路由信息
|
||||
|
|
@ -367,14 +373,27 @@ func (engine *Engine) SetHandleMethodNotAllowed(enable bool) {
|
|||
engine.rebuildFallbackChains()
|
||||
}
|
||||
|
||||
// SetLogger传入实例
|
||||
func (engine *Engine) SetLogger(logger *reco.Logger) {
|
||||
engine.LogReco = logger
|
||||
// SetLogger 传入 Logger 接口实例
|
||||
func (engine *Engine) SetLogger(logger Logger) {
|
||||
engine.logger = logger
|
||||
// 同步更新 LogReco 以保持向后兼容
|
||||
if rl, ok := logger.(*reco.Logger); ok {
|
||||
engine.LogReco = rl
|
||||
} else {
|
||||
engine.LogReco = nil
|
||||
}
|
||||
}
|
||||
|
||||
// 配置日志LoggerCfg
|
||||
// GetLogger 返回 Logger 接口实例
|
||||
func (engine *Engine) GetLogger() Logger {
|
||||
return engine.logger
|
||||
}
|
||||
|
||||
// SetLoggerCfg 使用 reco.Config 配置日志
|
||||
func (engine *Engine) SetLoggerCfg(logcfg reco.Config) {
|
||||
engine.LogReco = NewLogger(logcfg)
|
||||
logger := NewLogger(logcfg)
|
||||
engine.logger = logger
|
||||
engine.LogReco = logger
|
||||
}
|
||||
|
||||
// 设置自定义错误处理
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue