diff options
| author | David Crawshaw <crawshaw@tailscale.com> | 2020-07-13 11:53:26 +1000 |
|---|---|---|
| committer | David Crawshaw <crawshaw@tailscale.com> | 2020-07-13 11:56:06 +1000 |
| commit | d7ffecdfc927a7f348e3835c911f1dd9d7b16cfd (patch) | |
| tree | 6fa1849cd2c5147b543da5e432c002e92e7e942e /tsweb/tsweb.go | |
| parent | 977381f9ccf1f2865b9e2749a9d95851ad2bac55 (diff) | |
| download | tailscale-crawshaw/tswebextra.tar.xz tailscale-crawshaw/tswebextra.zip | |
tsweb: extra logging fields for HTTP handlerscrawshaw/tswebextra
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
Diffstat (limited to 'tsweb/tsweb.go')
| -rw-r--r-- | tsweb/tsweb.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tsweb/tsweb.go b/tsweb/tsweb.go index 1c8ff01bc..22262c5be 100644 --- a/tsweb/tsweb.go +++ b/tsweb/tsweb.go @@ -222,6 +222,7 @@ func (h retHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { msg.Seconds = h.timeNow().Sub(msg.When).Seconds() msg.Code = lw.code msg.Bytes = lw.bytes + msg.Extra = lw.extra switch { case lw.hijacked: @@ -264,6 +265,18 @@ func (h retHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } } +// Log adds name/value to the logs from a StdHandler ResponseWriter. +func Log(w http.ResponseWriter, name, value string) { + lw, _ := w.(*loggingResponseWriter) + if lw == nil { + return + } + if lw.extra == nil { + lw.extra = make(map[string]string) + } + lw.extra[name] = value +} + // loggingResponseWriter wraps a ResponseWriter and record the HTTP // response code that gets sent, if any. type loggingResponseWriter struct { @@ -272,6 +285,7 @@ type loggingResponseWriter struct { bytes int hijacked bool logf logger.Logf + extra map[string]string // extra logging fields } // WriteHeader implements http.Handler. |
