[英]Golang fasthttp router custom logger
我正在玩 fasthttp 和它的路由器,我對基本的東西沒有任何問題,我有一個工作服務器和一個路由器,這是很容易的部分。
問題出在記錄器上,我希望能夠自定義該記錄器,但 ctx.Logger() 似乎不可能,因為它只需要一個 Printf 參數並且格式不是我想要的。
有誰知道我可以在文檔中的哪里找到我想做的工作示例?
我目前擁有的代碼示例:
package server
import (
"github.com/fasthttp/router"
"github.com/valyala/fasthttp"
)
// Router will manage the routes of our API server
func Router() *router.Router {
r := router.New()
r.GET("/", index)
return r
}
func index(ctx *fasthttp.RequestCtx) {
ctx.Logger().Printf("/")
ctx.WriteString("Welcome!")
}
由於我仍在嘗試使用 web 服務器,但我仍然不了解它和 Go 的某些內容。 所以歡迎舉個例子。
例如,我希望能夠使用主 package 中定義的記錄器來執行類似的操作:
package server
import (
"github.com/fasthttp/router"
"github.com/valyala/fasthttp"
"go.uber.org/zap"
)
// Router will manage the routes of our API server
func Router(loger *zap.Logger) *router.Router {
r := router.New()
r.GET("/", index)
return r
}
func index(ctx *fasthttp.RequestCtx) {
ctx.Logger().Printf("/") // Here should print in the zap format of my choice.
ctx.WriteString("Welcome!")
}
如果您查看源代碼,很明顯您所擁有的只是編寫標准 Go 格式字符串的能力:
func (cl *ctxLogger) Printf(format string, args ...interface{}) {
msg := fmt.Sprintf(format, args...)
ctxLoggerLock.Lock()
cl.logger.Printf("%.3f %s - %s", time.Since(cl.ctx.ConnTime()).Seconds(), cl.ctx.String(), msg)
ctxLoggerLock.Unlock()
}
記錄器只是從上下文中添加一些附加信息。 因此,超出標准 Go 格式的進一步定制似乎是不可能的。 我不確定“我選擇的 zap 格式”是什么,所以我不能說是否有解決方法,或者即使標准 Go 格式選項在這里為您服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.