diff options
author | Gary Moon <garymoon@users.noreply.github.com> | 2023-04-13 09:14:06 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-13 21:14:06 +0800 |
commit | 29194a9dd6f5d8a98096a4a01c33d9be89616ed7 (patch) | |
tree | 7a86b688677d61be3f0cec004d0078096193fd7a /modules | |
parent | 2b749af50508a28c7088e7d76132c27f96a45789 (diff) | |
download | gitea-29194a9dd6f5d8a98096a4a01c33d9be89616ed7.tar.gz gitea-29194a9dd6f5d8a98096a4a01c33d9be89616ed7.zip |
Correct the access log format (#24085)
The default access log format has been unnecessarily escaped, leading to
spurious backslashes appearing in log lines.
Additionally, the `RemoteAddr` field includes the port, which breaks
most log parsers attempting to process it. I've added a call to
`net.SplitHostPort()` attempting to isolate the address alone, with a
fallback to the original address if it errs.
Signed-off-by: Gary Moon <gary@garymoon.net>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/context/access_log.go | 9 | ||||
-rw-r--r-- | modules/setting/log.go | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/modules/context/access_log.go b/modules/context/access_log.go index 515682b64b..64d204733b 100644 --- a/modules/context/access_log.go +++ b/modules/context/access_log.go @@ -7,6 +7,7 @@ import ( "bytes" "context" "fmt" + "net" "net/http" "strings" "text/template" @@ -67,17 +68,23 @@ func AccessLogger() func(http.Handler) http.Handler { requestID = parseRequestIDFromRequestHeader(req) } + reqHost, _, err := net.SplitHostPort(req.RemoteAddr) + if err != nil { + reqHost = req.RemoteAddr + } + next.ServeHTTP(w, r) rw := w.(ResponseWriter) buf := bytes.NewBuffer([]byte{}) - err := logTemplate.Execute(buf, routerLoggerOptions{ + err = logTemplate.Execute(buf, routerLoggerOptions{ req: req, Identity: &identity, Start: &start, ResponseWriter: rw, Ctx: map[string]interface{}{ "RemoteAddr": req.RemoteAddr, + "RemoteHost": reqHost, "Req": req, }, RequestID: &requestID, diff --git a/modules/setting/log.go b/modules/setting/log.go index dabdb543ab..1ff710073e 100644 --- a/modules/setting/log.go +++ b/modules/setting/log.go @@ -152,7 +152,7 @@ func loadLogFrom(rootCfg ConfigProvider) { Log.EnableSSHLog = sec.Key("ENABLE_SSH_LOG").MustBool(false) Log.EnableAccessLog = sec.Key("ENABLE_ACCESS_LOG").MustBool(false) Log.AccessLogTemplate = sec.Key("ACCESS_LOG_TEMPLATE").MustString( - `{{.Ctx.RemoteAddr}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.URL.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}\" \"{{.Ctx.Req.UserAgent}}"`, + `{{.Ctx.RemoteHost}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.URL.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}" "{{.Ctx.Req.UserAgent}}"`, ) Log.RequestIDHeaders = sec.Key("REQUEST_ID_HEADERS").Strings(",") // the `MustString` updates the default value, and `log.ACCESS` is used by `generateNamedLogger("access")` later |