diff --git a/server.go b/server.go
index cdd7f820857cacb64a69ccb10c5fd86c8b3e7511_c2VydmVyLmdv..f7310262f489b9238766467fda37d34958759fa1_c2VydmVyLmdv 100644
--- a/server.go
+++ b/server.go
@@ -19,6 +19,7 @@
 
 	"github.com/go-openapi/runtime/flagext"
 	"github.com/go-openapi/swag"
+	"github.com/justinas/alice"
 	flags "github.com/orus-io/go-flags"
 	"github.com/rs/zerolog"
 	"golang.org/x/net/netutil"
@@ -455,5 +456,6 @@
 
 // SetHandler allows for setting a http handler on this server.
 func (s *Server) SetHandler(handler http.Handler) {
-	s.handler = handler
+	stack := LogStack(s.log, zerolog.ErrorLevel)
+
 	if s.Prometheus {
@@ -459,3 +461,3 @@
 	if s.Prometheus {
-		s.handler = Prometheus("/metrics")(s.handler)
+		stack = append(stack, Prometheus("/metrics"))
 	}
@@ -461,4 +463,6 @@
 	}
+
+	s.handler = alice.New(stack...).Then(handler)
 }
 
 // UnixListener returns the domain socket listener.