Add logging middleware and log level option

This commit is contained in:
Stefan Prodan
2018-08-20 17:03:07 +03:00
parent 7d18ec68b3
commit f2d95bbf80
4 changed files with 85 additions and 27 deletions
+31
View File
@@ -0,0 +1,31 @@
package api
import (
"net/http"
"go.uber.org/zap"
)
type LoggingMiddleware struct {
logger *zap.Logger
}
func NewLoggingMiddleware(logger *zap.Logger) *LoggingMiddleware {
return &LoggingMiddleware{
logger: logger,
}
}
func (m *LoggingMiddleware) Handler(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
m.logger.Debug(
"request started",
zap.String("proto", r.Proto),
zap.String("uri", r.RequestURI),
zap.String("method", r.Method),
zap.String("remote", r.RemoteAddr),
zap.String("user-agent", r.UserAgent()),
)
next.ServeHTTP(w, r)
})
}
+2
View File
@@ -76,6 +76,8 @@ func (s *Server) registerHandlers() {
func (s *Server) registerMiddlewares() {
prom := NewPrometheusMiddleware()
s.router.Use(prom.Handler)
zapLog := NewLoggingMiddleware(s.logger)
s.router.Use(zapLog.Handler)
s.router.Use(versionMiddleware)
}