fix container
This commit is contained in:
@@ -114,17 +114,22 @@ func NewContainer() *Container {
|
|||||||
},
|
},
|
||||||
// 提供普通的*zap.Logger(用于大多数场景)
|
// 提供普通的*zap.Logger(用于大多数场景)
|
||||||
func(log logger.Logger) *zap.Logger {
|
func(log logger.Logger) *zap.Logger {
|
||||||
|
// 尝试转换为ZapLogger
|
||||||
if zapLogger, ok := log.(*logger.ZapLogger); ok {
|
if zapLogger, ok := log.(*logger.ZapLogger); ok {
|
||||||
return zapLogger.GetZapLogger()
|
return zapLogger.GetZapLogger()
|
||||||
}
|
}
|
||||||
|
// 尝试转换为LevelLogger
|
||||||
|
if levelLogger, ok := log.(*logger.LevelLogger); ok {
|
||||||
|
// 获取Info级别的日志器作为默认
|
||||||
|
if infoLogger := levelLogger.GetLevelLogger(zapcore.InfoLevel); infoLogger != nil {
|
||||||
|
return infoLogger
|
||||||
|
}
|
||||||
|
}
|
||||||
// 如果类型转换失败,创建一个默认的zap logger
|
// 如果类型转换失败,创建一个默认的zap logger
|
||||||
defaultLogger, _ := zap.NewProduction()
|
defaultLogger, _ := zap.NewProduction()
|
||||||
return defaultLogger
|
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) {
|
func(cfg *config.Config, cacheService interfaces.CacheService, logger *zap.Logger) (*gorm.DB, error) {
|
||||||
dbCfg := database.Config{
|
dbCfg := database.Config{
|
||||||
@@ -307,6 +312,27 @@ func NewContainer() *Container {
|
|||||||
middleware.NewTraceIDMiddleware,
|
middleware.NewTraceIDMiddleware,
|
||||||
middleware.NewErrorTrackingMiddleware,
|
middleware.NewErrorTrackingMiddleware,
|
||||||
NewRequestBodyLoggerMiddlewareWrapper,
|
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 创建请求日志中间件包装器
|
// NewRequestLoggerMiddlewareWrapper 创建请求日志中间件包装器
|
||||||
func NewRequestLoggerMiddlewareWrapper(logger *zap.Logger, cfg *config.Config, tracer *tracing.Tracer) *middleware.RequestLoggerMiddleware {
|
func NewRequestLoggerMiddlewareWrapper(logger *zap.Logger, cfg *config.Config, tracer *tracing.Tracer) *middleware.RequestLoggerMiddleware {
|
||||||
return middleware.NewRequestLoggerMiddleware(logger, cfg.App.IsDevelopment(), tracer)
|
return middleware.NewRequestLoggerMiddleware(logger, cfg.App.IsDevelopment(), tracer)
|
||||||
|
|||||||
Reference in New Issue
Block a user