Golang fasthttp路由器自定义记录器

Golang fasthttp路由器自定义记录器,go,go-http,fasthttp,Go,Go Http,Fasthttp,我在玩fasthttp和它的路由器,我没有基本的问题,我有一个工作服务器和一个路由器,这是最简单的部分 问题在于记录器,我希望能够自定义该记录器,但ctx.logger()似乎不可能,因为它只接受Printf参数,格式不是我想要的 有人知道我在文档中的什么地方可以找到我想要做的工作示例吗 我目前拥有的代码示例: package server import ( "github.com/fasthttp/router" "github.com/valy

我在玩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!")
}
因为我仍然在尝试我的网络服务器,我仍然不理解它的一些东西,所以我也去了。因此,我们欢迎举个例子

例如,我希望能够使用主软件包中的logger define执行类似的操作:

 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格式选项是否适合您。

您还没有说希望记录器做什么。顺便说一句,Go BTW有很多替代记录器。我想要的是能够定制fasthttprouter记录器。不过我还是会用一个例子来更新这个问题。我从来没有说过我希望它能像那样工作,我希望能够做这样的事情,如果我必须使用ctx.Logger()以外的东西,对我来说也没问题。。。正如我所说,我真的不知道如何去做我想做的事情,所以我举了一个例子,而不是最终的结果。