為什么要使用日志
記錄參數信息
猜測用戶行為
復現系統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