From 5953a50f4a7deb9b420e11407983a414f28bf503 Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Thu, 1 Aug 2019 16:12:22 -0400 Subject: [PATCH] Let Apper set request log format This adds a new ReqLog() func to the Apper interface that'll return the log message for incoming requests. Ref T649 --- app.go | 6 ++++++ handle.go | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/app.go b/app.go index 79b7145..4b9e840 100644 --- a/app.go +++ b/app.go @@ -118,6 +118,8 @@ type Apper interface { SaveConfig(*config.Config) error LoadKeys() error + + ReqLog(r *http.Request, status int, timeSince time.Duration) string } // App returns the App @@ -177,6 +179,10 @@ func (app *App) LoadKeys() error { return nil } +func (app *App) ReqLog(r *http.Request, status int, timeSince time.Duration) string { + return fmt.Sprintf("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, timeSince, r.UserAgent()) +} + // handleViewHome shows page at root path. Will be the Pad if logged in and the // catch-all landing page otherwise. func handleViewHome(app *App, w http.ResponseWriter, r *http.Request) error { diff --git a/handle.go b/handle.go index 4f137b9..1e5e8f6 100644 --- a/handle.go +++ b/handle.go @@ -137,7 +137,7 @@ func (h *Handler) User(f userHandlerFunc) http.HandlerFunc { status = http.StatusInternalServerError } - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() u := getUserSession(h.app.App(), r) @@ -175,7 +175,7 @@ func (h *Handler) Admin(f userHandlerFunc) http.HandlerFunc { status = http.StatusInternalServerError } - log.Info(fmt.Sprintf("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent())) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() u := getUserSession(h.app.App(), r) @@ -213,7 +213,7 @@ func (h *Handler) AdminApper(f userApperHandlerFunc) http.HandlerFunc { status = http.StatusInternalServerError } - log.Info(fmt.Sprintf("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent())) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() u := getUserSession(h.app.App(), r) @@ -295,7 +295,7 @@ func (h *Handler) UserAll(web bool, f userHandlerFunc, a authFunc) http.HandlerF status = 500 } - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() u, err := a(h.app.App(), r) @@ -381,7 +381,7 @@ func (h *Handler) WebErrors(f handlerFunc, ul UserLevelFunc) http.HandlerFunc { status = 500 } - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() var session *sessions.Session @@ -440,7 +440,7 @@ func (h *Handler) CollectionPostOrStatic(w http.ResponseWriter, r *http.Request) start := time.Now() status := 200 defer func() { - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() // Serve static file @@ -472,7 +472,7 @@ func (h *Handler) Web(f handlerFunc, ul UserLevelFunc) http.HandlerFunc { status = 500 } - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() if ul(h.app.App().cfg) != UserLevelNoneType { @@ -530,7 +530,7 @@ func (h *Handler) All(f handlerFunc) http.HandlerFunc { status = 500 } - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() // TODO: do any needed authentication @@ -562,7 +562,7 @@ func (h *Handler) AllReader(f handlerFunc) http.HandlerFunc { status = 500 } - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() if h.app.App().cfg.App.Private { @@ -619,7 +619,7 @@ func (h *Handler) Download(f dataHandlerFunc, ul UserLevelFunc) http.HandlerFunc status = 500 } - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() data, filename, err := f(h.app.App(), w, r) @@ -682,7 +682,7 @@ func (h *Handler) Redirect(url string, ul UserLevelFunc) http.HandlerFunc { status = sendRedirect(w, http.StatusFound, url) - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) return nil }()) @@ -799,7 +799,7 @@ func (h *Handler) LogHandlerFunc(f http.HandlerFunc) http.HandlerFunc { } // TODO: log actual status code returned - log.Info("\"%s %s\" %d %s \"%s\"", r.Method, r.RequestURI, status, time.Since(start), r.UserAgent()) + log.Info(h.app.ReqLog(r, status, time.Since(start))) }() if h.app.App().cfg.App.Private {