"remoteAddr": req.RemoteAddr,
"reqForwardedFor": req.Header.Get("X-Forwarded-For"),
"reqMethod": req.Method,
+ "reqHost": req.Host,
"reqPath": req.URL.Path[1:],
+ "reqQuery": req.URL.RawQuery,
"reqBytes": req.ContentLength,
})
logRequest(w, req, lgr)
"html"
"html/template"
"io"
- "log"
"net/http"
"net/url"
"os"
"git.curoverse.com/arvados.git/sdk/go/health"
"git.curoverse.com/arvados.git/sdk/go/httpserver"
"git.curoverse.com/arvados.git/sdk/go/keepclient"
+ log "github.com/Sirupsen/logrus"
"golang.org/x/net/webdav"
)
} else if w.WroteStatus() == 0 {
w.WriteHeader(statusCode)
} else if w.WroteStatus() != statusCode {
- httpserver.Log(r.RemoteAddr, "WARNING",
+ log.WithField("RequestID", r.Header.Get("X-Request-Id")).Warn(
fmt.Sprintf("Our status changed from %d to %d after we sent headers", w.WroteStatus(), statusCode))
}
if statusText == "" {
statusText = http.StatusText(statusCode)
}
- httpserver.Log(remoteAddr, statusCode, statusText, w.WroteBodyBytes(), r.Method, r.Host, r.URL.Path, r.URL.RawQuery)
}()
if strings.HasPrefix(r.URL.Path, "/_health/") && r.Method == "GET" {
Host: u.Host,
URL: u,
RequestURI: u.RequestURI(),
- Header: trial.header,
+ Header: copyHeader(trial.header),
}
s.testServer.Handler.ServeHTTP(resp, req)
var cookies []*http.Cookie
Host: u.Host,
URL: u,
RequestURI: u.RequestURI(),
- Header: trial.header,
+ Header: copyHeader(trial.header),
}
cookies = append(cookies, (&http.Response{Header: resp.Header()}).Cookies()...)
for _, c := range cookies {
Host: u.Host,
URL: u,
RequestURI: u.RequestURI(),
- Header: trial.header,
+ Header: copyHeader(trial.header),
Body: ioutil.NopCloser(&bytes.Buffer{}),
}
resp = httptest.NewRecorder()
Host: u.Host,
URL: u,
RequestURI: u.RequestURI(),
- Header: trial.header,
+ Header: copyHeader(trial.header),
Body: ioutil.NopCloser(&bytes.Buffer{}),
}
resp = httptest.NewRecorder()
c.Check(resp.Code, check.Equals, http.StatusOK)
c.Check(resp.Body.String(), check.Matches, `{"health":"OK"}\n`)
}
+
+func copyHeader(h http.Header) http.Header {
+ hc := http.Header{}
+ for k, v := range h {
+ hc[k] = append([]string(nil), v...)
+ }
+ return hc
+}
import (
"flag"
"fmt"
- "log"
"os"
"time"
"git.curoverse.com/arvados.git/sdk/go/arvados"
"git.curoverse.com/arvados.git/sdk/go/config"
+ log "github.com/Sirupsen/logrus"
"github.com/coreos/go-systemd/daemon"
)
if os.Getenv("ARVADOS_API_TOKEN") == "" {
os.Setenv("ARVADOS_API_TOKEN", "xxx")
}
+
+ log.SetFormatter(&log.JSONFormatter{
+ TimestampFormat: "2006-01-02T15:04:05.000000000Z07:00",
+ })
}
func main() {
}
func (srv *server) Start() error {
- srv.Handler = httpserver.AddRequestIDs(&handler{Config: srv.Config})
+ srv.Handler = httpserver.AddRequestIDs(httpserver.LogRequests(&handler{Config: srv.Config}))
srv.Addr = srv.Config.Listen
return srv.Server.Start()
}