go-chi-logger

chi logger middleware for zap
Installation
go get github.com/m8as/go-chi-logger
Usage
package main
import (
"fmt"
"github.com/go-chi/chi"
l "github.com/m8as/go-chi-logger"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"log"
"net/http"
)
func main() {
config := zap.NewProductionConfig()
config.Encoding = "json"
config.Level = zap.NewAtomicLevelAt(zap.InfoLevel)
config.OutputPaths = []string{"stdout"}
config.EncoderConfig.MessageKey = "message"
config.EncoderConfig.TimeKey = "timestamp"
config.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
logger, _ := config.Build()
undo := zap.RedirectStdLog(logger)
defer undo()
r := chi.NewRouter()
r.Use(l.Logger(logger))
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
_, _ = fmt.Fprint(w, "Hello World!")
})
if serve := http.ListenAndServe(":8080", r); serve != nil {
log.Printf("listen and serve error: %v", serve)
}
}
Log example
{"level":"info","timestamp":"2020-05-02T01:26:02.718+0300","caller":"go-chi-logger/logger.go:17","message":"","Status Code":200,"Request Method":"GE
T","Content-Type":"","Content-Length":"","User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.
113 Safari/537.36","Server":"","Via":"","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/
signed-exchange;v=b3;q=0.9","Path":"/","X-FORWARDED-FOR":"","Remote Addr":"[::1]:59296","Proto":"HTTP/1.1","Path":"/","Lat":0,"Size":12,"ReqID":""}