mirror of https://github.com/gofiber/fiber.git
💼 add locals to logger
Co-Authored-By: Rafael Cossovan <navossoc@gmail.com>pull/976/head
parent
a90ebb7098
commit
17b6597ec8
|
@ -103,6 +103,7 @@ const (
|
|||
TagQuery = "query:"
|
||||
TagForm = "form:"
|
||||
TagCookie = "cookie:"
|
||||
TagLocals = "locals:"
|
||||
TagBlack = "black"
|
||||
TagRed = "red"
|
||||
TagGreen = "green"
|
||||
|
|
|
@ -79,6 +79,7 @@ const (
|
|||
TagRoute = "route"
|
||||
TagError = "error"
|
||||
TagHeader = "header:"
|
||||
TagLocals = "locals:"
|
||||
TagQuery = "query:"
|
||||
TagForm = "form:"
|
||||
TagCookie = "cookie:"
|
||||
|
@ -332,6 +333,17 @@ func New(config ...Config) fiber.Handler {
|
|||
return buf.WriteString(c.FormValue(tag[5:]))
|
||||
case strings.HasPrefix(tag, TagCookie):
|
||||
return buf.WriteString(c.Cookies(tag[7:]))
|
||||
case strings.HasPrefix(tag, TagLocals):
|
||||
switch v := c.Locals(tag[7:]).(type) {
|
||||
case []byte:
|
||||
return buf.Write(v)
|
||||
case string:
|
||||
return buf.WriteString(v)
|
||||
case nil:
|
||||
return 0, nil
|
||||
default:
|
||||
return buf.WriteString(fmt.Sprintf("%v", v))
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0, nil
|
||||
|
|
|
@ -36,6 +36,52 @@ func Test_Logger(t *testing.T) {
|
|||
utils.AssertEqual(t, "some random error", buf.String())
|
||||
}
|
||||
|
||||
// go test -run Test_Logger_locals
|
||||
func Test_Logger_locals(t *testing.T) {
|
||||
app := fiber.New()
|
||||
|
||||
buf := bytebufferpool.Get()
|
||||
defer bytebufferpool.Put(buf)
|
||||
|
||||
app.Use(New(Config{
|
||||
Format: "${locals:demo}",
|
||||
Output: buf,
|
||||
}))
|
||||
|
||||
app.Get("/", func(c *fiber.Ctx) error {
|
||||
c.Locals("demo", "johndoe")
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
})
|
||||
|
||||
app.Get("/int", func(c *fiber.Ctx) error {
|
||||
c.Locals("demo", 55)
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
})
|
||||
|
||||
app.Get("/empty", func(c *fiber.Ctx) error {
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
})
|
||||
|
||||
resp, err := app.Test(httptest.NewRequest("GET", "/", nil))
|
||||
utils.AssertEqual(t, nil, err)
|
||||
utils.AssertEqual(t, fiber.StatusOK, resp.StatusCode)
|
||||
utils.AssertEqual(t, "johndoe", buf.String())
|
||||
|
||||
buf.Reset()
|
||||
|
||||
resp, err = app.Test(httptest.NewRequest("GET", "/int", nil))
|
||||
utils.AssertEqual(t, nil, err)
|
||||
utils.AssertEqual(t, fiber.StatusOK, resp.StatusCode)
|
||||
utils.AssertEqual(t, "55", buf.String())
|
||||
|
||||
buf.Reset()
|
||||
|
||||
resp, err = app.Test(httptest.NewRequest("GET", "/empty", nil))
|
||||
utils.AssertEqual(t, nil, err)
|
||||
utils.AssertEqual(t, fiber.StatusOK, resp.StatusCode)
|
||||
utils.AssertEqual(t, "", buf.String())
|
||||
}
|
||||
|
||||
// go test -run Test_Logger_Next
|
||||
func Test_Logger_Next(t *testing.T) {
|
||||
app := fiber.New()
|
||||
|
@ -130,10 +176,9 @@ func Benchmark_Logger(b *testing.B) {
|
|||
app := fiber.New()
|
||||
|
||||
app.Use(New(Config{
|
||||
Format: "${bytesReceived} ${bytesSent} ${status}",
|
||||
Format: "${path}",
|
||||
Output: ioutil.Discard,
|
||||
}))
|
||||
|
||||
app.Get("/", func(c *fiber.Ctx) error {
|
||||
return c.SendString("Hello, World!")
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue