diff --git a/middlewares/accesslog/logger.go b/middlewares/accesslog/logger.go index 4754d7bba..f0480fc4d 100644 --- a/middlewares/accesslog/logger.go +++ b/middlewares/accesslog/logger.go @@ -101,19 +101,25 @@ func openAccessLogFile(filePath string) (*os.File, error) { return file, nil } -// GetLogDataTable gets the request context object that contains logging data. This accretes -// data as the request passes through the middleware chain. +// GetLogDataTable gets the request context object that contains logging data. +// This creates data as the request passes through the middleware chain. func GetLogDataTable(req *http.Request) *LogData { - return req.Context().Value(DataTableKey).(*LogData) + if ld, ok := req.Context().Value(DataTableKey).(*LogData); ok { + return ld + } + log.Errorf("%s is nil", DataTableKey) + return &LogData{Core: make(CoreLogData)} } func (l *LogHandler) ServeHTTP(rw http.ResponseWriter, req *http.Request, next http.HandlerFunc) { now := time.Now().UTC() - core := make(CoreLogData) + + core := CoreLogData{ + StartUTC: now, + StartLocal: now.Local(), + } logDataTable := &LogData{Core: core, Request: req.Header} - core[StartUTC] = now - core[StartLocal] = now.Local() reqWithDataTable := req.WithContext(context.WithValue(req.Context(), DataTableKey, logDataTable)) diff --git a/middlewares/accesslog/save_backend.go b/middlewares/accesslog/save_backend.go index 353adbe71..674656a86 100644 --- a/middlewares/accesslog/save_backend.go +++ b/middlewares/accesslog/save_backend.go @@ -43,8 +43,6 @@ func (sb *SaveBackend) ServeHTTP(rw http.ResponseWriter, r *http.Request) { table.Core[OriginContentSize] = crw.Size() } -//------------------------------------------------------------------------------------------------- - // SaveFrontend sends the frontend name to the logger. These are sometimes used with a corresponding // SaveBackend handler, but not always. For example, redirected requests don't reach a backend. type SaveFrontend struct { diff --git a/middlewares/errorpages/error_pages.go b/middlewares/errorpages/error_pages.go index d73aa1eb0..dc460dbb6 100644 --- a/middlewares/errorpages/error_pages.go +++ b/middlewares/errorpages/error_pages.go @@ -99,7 +99,8 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, req *http.Request, next http. utils.CopyHeaders(pageReq.Header, req.Header) utils.CopyHeaders(w.Header(), recorder.Header()) w.WriteHeader(recorder.GetCode()) - h.backendHandler.ServeHTTP(w, pageReq) + + h.backendHandler.ServeHTTP(w, pageReq.WithContext(req.Context())) return } }