package
0.0.0-20241109021313-6e2457b08dcf
Repository: https://github.com/hjh0924/genericgo.git
Documentation: pkg.go.dev

# README

AccessLog

使用 zapviper 实现动态读取配置文件中的参数来动态改变是否读取请求体和响应体

func GetLoggerMiddleware(zl logger.Logger) gin.HandlerFunc {
	ginLogger := accesslog.NewBuilder(func(ctx context.Context, al *accesslog.AccessLog) {
		zl.Debug("HTTP AccessLog",
			logger.Field{Key: "Method", Val: al.Method},
			logger.Field{Key: "URL", Val: al.URL},
			logger.Field{Key: "StatusCode", Val: al.StatusCode},
			logger.Field{Key: "Duration", Val: al.Duration},
			logger.Field{Key: "ReqBody", Val: al.ReqBody},
			logger.Field{Key: "RespBody", Val: al.RespBody},
		)
	})
	viper.WatchConfig()
	viper.OnConfigChange(func(in fsnotify.Event) {
		// 当配置文件变更时,更新日志记录的行为
		allowReqBody := viper.GetBool("config.log.allowReqBody")
		allowRespBody := viper.GetBool("config.log.allowRespBody")
		zl.Debug("Configuration updated",
			logger.Field{Key: "config.log.allowReqBody", Val: allowReqBody},
			logger.Field{Key: "config.log.allowRespBody", Val: allowRespBody},
		)
		ginLogger.AllowReqBody(allowReqBody).AllowRespBody(allowRespBody)
	})
	return ginLogger.AllowReqBody(viper.GetBool("config.log.allowReqBody")).AllowRespBody(viper.GetBool("config.log.allowRespBody")).Build()
}

# Functions

NewBuilder 创建一个新的 Builder 实例,并初始化配置。.

# Structs

AccessLog 记录访问日志的结构体。.
Builder 用于构建并配置 Gin 的日志中间件。.

# Type aliases

LogFunc 定义日志记录函数的签名。.