func (c *Context) Log(rw web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc) { c.Job = stream.NewJob(r.RoutePath()) id, err := uuid.NewV4() if err == nil { c.Job.KeyValue("request-id", id.String()) } path := r.URL.Path c.Job.EventKv("api.request", health.Kvs{"path": path}) next(rw, r) code := rw.StatusCode() kvs := health.Kvs{ "code": fmt.Sprint(code), "path": path, } // Map HTTP status code to category. var status health.CompletionStatus if c.Panic { status = health.Panic } else if code < 400 { status = health.Success } else if code == 422 { status = health.ValidationError } else if code < 500 { status = health.Junk // 404, 401 } else { status = health.Error } c.Job.CompleteKv(status, kvs) }
func (c *apiContext) HealthMiddleware(rw web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc) { c.Job = c.hd.stream.NewJob(r.RoutePath()) path := r.URL.Path c.EventKv("starting_request", health.Kvs{"path": path}) next(rw, r) code := rw.StatusCode() kvs := health.Kvs{ "code": fmt.Sprint(code), "path": path, } // Map HTTP status code to category. var status health.CompletionStatus // if c.Panic { // status = health.Panic // } else if code < 400 { status = health.Success } else if code == 422 { status = health.ValidationError } else if code < 500 { status = health.Junk // 404, 401 } else { status = health.Error } c.CompleteKv(status, kvs) }