gin实例--使用gin自带log

2,195 阅读1分钟

源码

github.com/zsl10/gin-e…

实例

  • 代码:
package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"io"
	"net/http"
	"os"
	"time"
)

func main() {
	gin.DisableConsoleColor()	// 禁用控制台颜色
	f, _ := os.Create("gin_test.log")	// 日志写入文件
	gin.DefaultWriter = io.MultiWriter(f)
	// gin.DefaultWriter = io.MultiWriter(f, os.Stdout)  //同时将日志写入文件和控制台
	r := gin.New()
	r.Use(gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
		// 自定义日志格式
		return fmt.Sprintf("%s - [%s] \"%s %s %s %d %s \"%s\" %s\"\n",
			param.ClientIP,
			param.TimeStamp.Format(time.RFC1123),
			param.Method,
			param.Path,
			param.Request.Proto,
			param.StatusCode,
			param.Latency,
			param.Request.UserAgent(),
			param.ErrorMessage,
		)
	}))
	r.Use(gin.Recovery())

	r.GET("test/log", func(c *gin.Context) {
		tempMap := map[string]int{"a": 1, "b": 2, "c": 3}
		fmt.Fprintln(gin.DefaultWriter, "test log")
		fmt.Fprintln(gin.DefaultWriter,tempMap)
		c.String(http.StatusOK,"ok")
	})
	r.Run(":8080")
}

  • 输出:
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /test/log                 --> main.main.func2 (3 handlers)
[GIN-debug] Listening and serving HTTP on :8080
test log
map[a:1 b:2 c:3]
127.0.0.1 - [Thu, 09 Jan 2020 16:52:57 CST] "GET /test/log HTTP/1.1 200 148.473µs "PostmanRuntime/7.19.0" "