diff --git a/default_context.go b/default_context.go index d57f81c..8853ab3 100644 --- a/default_context.go +++ b/default_context.go @@ -29,6 +29,7 @@ func newContext(r Route, res http.ResponseWriter, req *http.Request) *DefaultCon params: params, data: data, env: r.Env, + logger: r.Logger, } } diff --git a/default_router.go b/default_router.go index 5d3764b..5ff5b67 100644 --- a/default_router.go +++ b/default_router.go @@ -4,6 +4,8 @@ import ( "fmt" "net/http" "strings" + + "github.com/sirupsen/logrus" ) func NewRouter(opts ...RouterOption) Router { @@ -59,10 +61,12 @@ func (r *DefaultRouter) addRoute(m, p string, h Handler) { } r.Routes = append(r.Routes, &Route{ - Method: m, - Path: p, - Handler: h, - Env: r.Options.Env, + Method: m, + Path: p, + Handler: h, + Env: r.Options.Env, + Middleware: r.Options.MiddlewareStack, + Logger: r.Options.Logger, }) } @@ -70,6 +74,7 @@ type RouterOptions struct { Env string Prefix string MiddlewareStack MiddlewareStack + Logger *logrus.Logger } type RouterOption func(*RouterOptions) @@ -91,3 +96,9 @@ func RouterMiddleware(ms MiddlewareStack) RouterOption { o.MiddlewareStack = ms } } + +func RouterLogger(l *logrus.Logger) RouterOption { + return func(o *RouterOptions) { + o.Logger = l + } +} diff --git a/middleware.go b/middleware.go index ae253fd..ef90ffb 100644 --- a/middleware.go +++ b/middleware.go @@ -16,6 +16,7 @@ func (m *MiddlewareStack) Get() []Middleware { func (m *MiddlewareStack) handler(r *Route) Handler { handler := r.Handler + if len(m.stack) == 0 { return handler } diff --git a/middleware/logger.go b/middleware/logger.go index ea43947..82d4c85 100644 --- a/middleware/logger.go +++ b/middleware/logger.go @@ -1,11 +1,13 @@ package middleware -import "github.com/lukerodham/tuu" +import ( + "github.com/lukerodham/tuu" +) // RequestLogger is a default/example implementation of how a logging middleware would be implemented. func RequestLogger(next tuu.Handler) tuu.Handler { return func(c tuu.Context) error { - c.Logger().WithField("url", c.Value("path")).Debug("New request") + c.Logger().WithField("url", c.Value("path")).Info("New request") return next(c) } diff --git a/route.go b/route.go index 1b65b12..ea48e9b 100644 --- a/route.go +++ b/route.go @@ -4,6 +4,7 @@ import ( "net/http" gcontext "github.com/gorilla/context" + "github.com/sirupsen/logrus" ) type Route struct { @@ -12,6 +13,7 @@ type Route struct { Handler Handler Env string Middleware MiddlewareStack + Logger *logrus.Logger } func (r *Route) ServeHTTP(res http.ResponseWriter, req *http.Request) {