diff --git a/internal/container/container.go b/internal/container/container.go index 732eebe..d73a34e 100644 --- a/internal/container/container.go +++ b/internal/container/container.go @@ -114,17 +114,22 @@ func NewContainer() *Container { }, // 提供普通的*zap.Logger(用于大多数场景) func(log logger.Logger) *zap.Logger { + // 尝试转换为ZapLogger if zapLogger, ok := log.(*logger.ZapLogger); ok { return zapLogger.GetZapLogger() } + // 尝试转换为LevelLogger + if levelLogger, ok := log.(*logger.LevelLogger); ok { + // 获取Info级别的日志器作为默认 + if infoLogger := levelLogger.GetLevelLogger(zapcore.InfoLevel); infoLogger != nil { + return infoLogger + } + } // 如果类型转换失败,创建一个默认的zap logger defaultLogger, _ := zap.NewProduction() return defaultLogger }, - // 提供业务日志记录器 - func(logger *zap.Logger) *middleware.BusinessLogger { - return middleware.NewBusinessLogger(logger) - }, + // 数据库连接 func(cfg *config.Config, cacheService interfaces.CacheService, logger *zap.Logger) (*gorm.DB, error) { dbCfg := database.Config{ @@ -307,6 +312,27 @@ func NewContainer() *Container { middleware.NewTraceIDMiddleware, middleware.NewErrorTrackingMiddleware, NewRequestBodyLoggerMiddlewareWrapper, + // 新增的中间件 + func(logger *zap.Logger) *middleware.PanicRecoveryMiddleware { + return middleware.NewPanicRecoveryMiddleware(logger) + }, + func(logger *zap.Logger, cfg *config.Config) *middleware.ComprehensiveLoggerMiddleware { + config := &middleware.ComprehensiveLoggerConfig{ + EnableRequestLogging: true, + EnableResponseLogging: true, + EnableRequestBodyLogging: cfg.App.IsDevelopment(), // 开发环境记录请求体 + EnableErrorLogging: true, + EnableBusinessLogging: true, + EnablePerformanceLogging: true, + MaxBodySize: 1024 * 10, // 10KB + ExcludePaths: []string{"/health", "/metrics", "/favicon.ico", "/swagger"}, + } + return middleware.NewComprehensiveLoggerMiddleware(logger, config) + }, + // 业务日志记录器 + func(logger *zap.Logger) *middleware.BusinessLogger { + return middleware.NewBusinessLogger(logger) + }, ), // 仓储层 - 用户域 @@ -624,26 +650,6 @@ func RegisterRoutes( // ================ 中间件包装函数 ================ -// NewPanicRecoveryMiddlewareWrapper 创建Panic恢复中间件包装器 -func NewPanicRecoveryMiddlewareWrapper(logger *zap.Logger) *middleware.PanicRecoveryMiddleware { - return middleware.NewPanicRecoveryMiddleware(logger) -} - -// NewComprehensiveLoggerMiddlewareWrapper 创建全面日志中间件包装器 -func NewComprehensiveLoggerMiddlewareWrapper(logger *zap.Logger, cfg *config.Config) *middleware.ComprehensiveLoggerMiddleware { - config := &middleware.ComprehensiveLoggerConfig{ - EnableRequestLogging: true, - EnableResponseLogging: true, - EnableRequestBodyLogging: cfg.App.IsDevelopment(), // 开发环境记录请求体 - EnableErrorLogging: true, - EnableBusinessLogging: true, - EnablePerformanceLogging: true, - MaxBodySize: 1024 * 10, // 10KB - ExcludePaths: []string{"/health", "/metrics", "/favicon.ico", "/swagger"}, - } - return middleware.NewComprehensiveLoggerMiddleware(logger, config) -} - // NewRequestLoggerMiddlewareWrapper 创建请求日志中间件包装器 func NewRequestLoggerMiddlewareWrapper(logger *zap.Logger, cfg *config.Config, tracer *tracing.Tracer) *middleware.RequestLoggerMiddleware { return middleware.NewRequestLoggerMiddleware(logger, cfg.App.IsDevelopment(), tracer)