package mainimport ("net/http""github.com/gin-gonic/gin")func main() {// 禁用控制台log颜色gin.DisableConsoleColor()r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.String(http.StatusOK, "pong")})r.Run(":8080")}

package mainimport ("net/http""github.com/gin-gonic/gin")func main() {// 始终为日志着色:gin.ForceConsoleColor()r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.String(http.StatusOK, "pong")})r.Run(":8080")}

[GIN-debug] POST /foo --> main.main.func1 (3 handlers)[GIN-debug] GET /bar --> main.main.func2 (3 handlers)[GIN-debug] GET /status --> main.main.func3 (3 handlers)
package mainimport ("log""net/http""github.com/gin-gonic/gin")func main() {r := gin.Default()gin.DebugPrintRouteFunc = func(httpMethod, absolutePath, handlerName string, nuHandlers int) {log.Printf("endpoint %v %v %v %v\n", httpMethod, absolutePath, handlerName, nuHandlers)}r.POST("/foo", func(c *gin.Context) {c.JSON(http.StatusOK, "foo")})r.GET("/bar", func(c *gin.Context) {c.JSON(http.StatusOK, "bar")})r.GET("/status", func(c *gin.Context) {c.JSON(http.StatusOK, "ok")})r.Run()}
// custom logfilepackage mainimport ("fmt""time""github.com/gin-gonic/gin")func main() {r := gin.New()//r.Use(gin.LoggerWithFormatter(func(params gin.LogFormatterParams) string {// 你的自定义格式return fmt.Sprintf("%s - [%s] \"%s %s %s %d %s \"%s\" %s\"\n",params.ClientIP,params.TimeStamp.Format(time.RFC1123),params.Method,params.Path,params.Request.Proto,params.StatusCode,params.Latency,params.Request.UserAgent(),params.ErrorMessage,)}))r.Use(gin.Recovery())r.GET("/ping", func(c *gin.Context) {c.String(200, "pong")})r.Run(":8080")}
代码运行起来,在访问127.0.0.1:8080/ping时,日志输出变为了设置的格式:

■ ■■■■
// 如何写日志文件package mainimport ("io""os""github.com/gin-gonic/gin")func main() {// 禁用控制台颜色,将日志写入文件时不需要控制台颜色gin.DisableConsoleColor()// 记录到文件中f, _ := os.Create("gin.log")gin.DefaultWriter = io.MultiWriter(f)// 如果需要同时将日志写入文件和控制台,请使用以下代码gin.DefaultWriter = io.MultiWriter(f, os.Stdout)r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.String(200, "pong")})r.Run(":8080")}
