網頁

2021/7/7

Golang Gin 寫出日誌log範例

Gin寫出日誌訊息到log檔的方式如下。


範例環境:

  • Go 1.16
  • Gin 1.7.2

本篇參考官方文件的[How to write log file](複製貼上^_^)。


參考「Golang Gin Web Framework hello world範例」建立好一個專案,然後下面依此進行修改。

main.go的內容修改如下,使用os.Create()指定要建立的log檔名稱,然後用io.MultiWriter()設定多個輸出,一是log檔,一是標準輸出(console)。

使用的gin engine要包含Logger(),所以用gin.Default()取得gin engine。

main.go

package main

import (
    "io"
    "os"

    "github.com/gin-gonic/gin"
)

func main() {

    gin.DisableConsoleColor()
    file, _ := os.Create("gin.log")                     // create log file
    gin.DefaultWriter = io.MultiWriter(file, os.Stdout) // write log to file and console

    router := gin.Default() // get gin engine with Logger attached
    router.GET("/hello", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "hello world",
        })
    })
    router.Run()
}

啟動專案即可看到gin.log出現在main.go的同目錄中,內容為啟動時的訊息。

gin.log

[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[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    /hello                    --> main.main.func1 (3 handlers)
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080

用curl命令發送http request curl http://localhost:8080/hello則log檔中會增加接收request的訊息。

gin.log

[[GIN] 2021/07/08 - 09:36:36 | 200 |      57.959µs |             ::1 | GET      "/hello"

沒有留言:

張貼留言