gin自定义路由日志过滤

需求场景

健康检查的http请求过于频繁,不希望将这部分日志打印出来

改动

r := gin.New()
// r.Use(Logger())//不使用包提供的日志
//自定义输出日志
r.Use(gin.LoggerWithConfig(gin.LoggerConfig{
    Formatter: func(param gin.LogFormatterParams) string {
        //健康检查不输出
        if param.Path == "/check/health" {
            return ""
        }
        var statusColor, methodColor, resetColor string
        if param.IsOutputColor() {
            statusColor = param.StatusCodeColor()
            methodColor = param.MethodColor()
            resetColor = param.ResetColor()
        }

        if param.Latency > time.Minute {
            // Truncate in a golang < 1.8 safe way
            param.Latency = param.Latency - param.Latency%time.Second
        }
        return fmt.Sprintf("[GIN] %v |%s %3d %s| %13v | %15s |%s %-7s %s %#v\n%s",
            param.TimeStamp.Format("2006/01/02 - 15:04:05"),
            statusColor, param.StatusCode, resetColor,
            param.Latency,
            param.ClientIP,
            methodColor, param.Method, resetColor,
            param.Path,
            param.ErrorMessage,
        )
    },
    Output: gin.DefaultWriter,
}))
添加新评论