summaryrefslogtreecommitdiff
path: root/contrib/log/log.go
blob: 0060f4e3c06f4ee390c122ca9fed59c24d06040a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package log

import (
	"context"
	"io"
	"time"

	kitlog "github.com/go-kit/log"

	"tildegit.org/tjp/gus"
)

func Requests(out io.Writer, logger kitlog.Logger) gus.Middleware {
	if logger == nil {
		logger = kitlog.NewLogfmtLogger(kitlog.NewSyncWriter(out))
	}

	return func(next gus.Handler) gus.Handler {
		return func(ctx context.Context, r *gus.Request) (resp *gus.Response) {
			start := time.Now()
			defer func() {
				end := time.Now()
				logger.Log(
					"msg", "request",
					"ts", end,
					"dur", end.Sub(start),
					"url", r.URL,
					"status", resp.Status,
				)
			}()

			return next(ctx, r)
		}
	}
}