repositorypackage
0.2.0
Repository: https://github.com/go-mods/zerolog-gin.git
Documentation: pkg.go.dev
# Packages
No description provided by the author
# README
zerolog-gin
zerolog-gin
is a middleware for the Gin web framework that integrates the zerolog
logger, providing a fast and efficient logging solution for your web applications. Designed to be lightweight and performant, zerolog-gin
captures and structures logs optimally, making debugging and performance analysis easier. With its compatibility with the advanced features of zerolog
, it allows for customizing logs according to the specific needs of your application while maintaining a minimal memory footprint.
Installation
To install the package, use the following command:
go get github.com/go-mods/zerolog-gin
Usage
Here is an example of how to use zerolog-gin
with a Gin application:
package main
import (
"bytes"
"fmt"
"github.com/gin-gonic/gin"
zerologgin "github.com/go-mods/zerolog-gin"
"github.com/rs/zerolog"
"io"
"net/http"
"os"
)
func main() {
// logger to use with gin
logger := zerolog.New(os.Stdout).With().Timestamp().Logger()
// Create an instance of gin router
r := gin.New()
r.SetTrustedProxies([]string{"::1"})
// Add zerolog-gin as a middleware
r.Use(zerologgin.LoggerWithOptions(&zerologgin.Options{Name: "server", Logger: &logger}))
r.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "hello, zerolog-gin example")
})
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "pong"})
})
r.POST("/echo", func(c *gin.Context) {
body, err := io.ReadAll(c.Request.Body)
c.Request.Body = io.NopCloser(bytes.NewReader(body))
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "undefined"})
} else {
c.String(http.StatusOK, string(body))
}
})
if err := r.Run(":8080"); err != nil {
fmt.Println(err.Error())
}
}
License
This project is licensed under the MIT License - see the LICENSE.md file for details.