summaryrefslogtreecommitdiffhomepage
path: root/tsweb/tsweb.go
diff options
context:
space:
mode:
authorDavid Crawshaw <crawshaw@tailscale.com>2020-07-13 11:53:26 +1000
committerDavid Crawshaw <crawshaw@tailscale.com>2020-07-13 11:56:06 +1000
commitd7ffecdfc927a7f348e3835c911f1dd9d7b16cfd (patch)
tree6fa1849cd2c5147b543da5e432c002e92e7e942e /tsweb/tsweb.go
parent977381f9ccf1f2865b9e2749a9d95851ad2bac55 (diff)
downloadtailscale-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.go14
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.