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"
沒有留言:
張貼留言