Tengo un montón de rutas y empiezo con gin.Default() (habilitando el registro y la recuperación para todas las rutas de forma predeterminada). Pero hay una ruta (es decir, /health) que recibe un ping cada 5 segundos. ¿Cuál es una forma sencilla de deshabilitar el registro de solicitudes para esa ruta sin cambiar gran parte del código?

func main() {
    // gin is initialized upstream in our internal framework
    // so I can't change this line easily.
    router := gin.Default()

    router.GET("/someGet", getting)
    router.POST("/somePost", posting)
    router.PUT("/somePut", putting)
    router.DELETE("/someDelete", deleting)
    // ... and more

    // Disable request logging for only this route. 
    // Note: I'm hoping that there's some parameter I can pass in here to do that
    route.GET("/health", health)

    router.Run()

}
5
Paul Lam 14 feb. 2018 a las 08:11

2 respuestas

La mejor respuesta

gin.Logger() tiene una forma más larga con argumentos que pueden tomar argumentos de cadenas que enumeran rutas que no deben registrarse, es decir, gin.LoggerWithWriter(gin.DefaultWriter, "<NO LOG PATH 1>", ...).

Sobrescribí la estructura base GinService con baseService.GinEngine = gin.New() y luego adjunté los middlewares gin.LoggerWithWriter (...) y gin.Recovery () manualmente.

Eso hizo el truco.

4
Paul Lam 21 mar. 2018 a las 05:45

¡La solución de @Paul Lam funciona! aquí está el código de referencia:

    router := gin. Default()

Se convierte

    router := gin.New()
    router.Use(
        gin.LoggerWithWriter(gin.DefaultWriter, "/pathsNotToLog/"),
        gin.Recovery(),
    )

Definición de gin.Default() referida desde github.com/gin-gonic/gin@v1.3.0/gin.go

4
Kanak Singhal 9 may. 2019 a las 06:07