Gin的日志和日志格式


為什么要使用日志

記錄參數信息
猜測用戶行為
復現系統bug並修復

func main() {
    // 禁用控制台顏色
    gin.DisableConsoleColor()

    // 創建記錄日志的文件
    f, _ := os.Create("gin.log")
    gin.DefaultWriter = io.MultiWriter(f)

    // 如果需要將日志同時寫入文件和控制台,請使用以下代碼
    // gin.DefaultWriter = io.MultiWriter(f, os.Stdout)

    router := gin.Default()
    router.GET("/ping", func(c *gin.Context) {
        c.String(200, "pong")
    })

    router.Run(":8080")
}

自定義日志格式

func main() {
	router := gin.New()

	// LoggerWithFormatter 中間件會將日志寫入 gin.DefaultWriter
	// By default gin.DefaultWriter = os.Stdout
	router.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,
		)
	}))
	router.Use(gin.Recovery())

	router.GET("/ping", func(c *gin.Context) {
		c.String(200, "pong")
	})

	router.Run(":8080")
}

Gin自帶日志寫入中間件

自定義比較麻煩

第三方日志工具

go-logging

logrus

日志切割

自行根據時間在寫入時間進行日志分割

借助成品的日志包

參考:
https://www.bilibili.com/video/BV1Bf4y1y7yh
https://www.kancloud.cn/shuangdeyu/gin_book/949425


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM