Skip to content

Commit

Permalink
Replace Echo logger middleware from default to Zerolog-based one
Browse files Browse the repository at this point in the history
  • Loading branch information
yunkon-kim committed Dec 21, 2023
1 parent bf35eab commit 2de9158
Showing 1 changed file with 54 additions and 3 deletions.
57 changes: 54 additions & 3 deletions pkg/api/rest/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,57 @@ func RunServer(port string) {
e := echo.New()

// Middleware
e.Use(middleware.Logger())
// e.Use(middleware.Logger()) // default logger middleware in echo

// Custom logger middleware with zerolog
e.Use(middleware.RequestLoggerWithConfig(middleware.RequestLoggerConfig{
LogError: true,
LogRequestID: true,
LogRemoteIP: true,
LogHost: true,
LogMethod: true,
LogURI: true,
LogUserAgent: true,
LogStatus: true,
LogLatency: true,
LogContentLength: true,
LogResponseSize: true,
// HandleError: true, // forwards error to the global error handler, so it can decide appropriate status code
LogValuesFunc: func(c echo.Context, v middleware.RequestLoggerValues) error {
if v.Error == nil {
log.Info().
Str("id", v.RequestID).
Str("remote_ip", v.RemoteIP).
Str("host", v.Host).
Str("method", v.Method).
Str("URI", v.URI).
Str("user_agent", v.UserAgent).
Int("status", v.Status).
Int64("latency", v.Latency.Nanoseconds()).
Str("latency_human", v.Latency.String()).
Str("bytes_in", v.ContentLength).
Int64("bytes_out", v.ResponseSize).
Msg("request")
} else {
log.Error().
Err(v.Error).
Str("id", v.RequestID).
Str("remote_ip", v.RemoteIP).
Str("host", v.Host).
Str("method", v.Method).
Str("URI", v.URI).
Str("user_agent", v.UserAgent).
Int("status", v.Status).
Int64("latency", v.Latency.Nanoseconds()).
Str("latency_human", v.Latency.String()).
Str("bytes_in", v.ContentLength).
Int64("bytes_out", v.ResponseSize).
Msg("request error")
}
return nil
},
}))

e.Use(middleware.Recover())
// limit the application to 20 requests/sec using the default in-memory store
e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(20)))
Expand Down Expand Up @@ -148,6 +198,7 @@ func RunServer(port string) {

// Route for system management
e.GET("/beetle/swagger/*", echoSwagger.WrapHandler)

// e.GET("/beetle/swaggerActive", rest_common.RestGetSwagger)
e.GET("/beetle/health", rest_common.RestGetHealth)
e.GET("/beetle/httpVersion", rest_common.RestCheckHTTPVersion)
Expand Down Expand Up @@ -221,8 +272,8 @@ func RunServer(port string) {
// Block until a signal is triggered
<-gracefulShutdownContext.Done()

fmt.Println("\n[Stop] CM-Beetle REST Server")
log.Info().Msg("stopping CM-Beetle REST Server")
fmt.Println("\n[Stop] CM-Beetle REST API server")
log.Info().Msg("stopping CM-Beetle REST API server")
ctx, cancel := context.WithTimeout(context.TODO(), 3*time.Second)
defer cancel()

Expand Down

0 comments on commit 2de9158

Please sign in to comment.