diff options
| author | tjpcc <tjp@ctrl-c.club> | 2023-01-09 16:40:24 -0700 | 
|---|---|---|
| committer | tjpcc <tjp@ctrl-c.club> | 2023-01-09 16:40:24 -0700 | 
| commit | ff05d62013906f3086b452bfeda3e0d5b9b7a541 (patch) | |
| tree | 3be29de0b1bc7c273041c6d89b71ca447c940556 /contrib/log | |
Initial commit.
some basics:
 - minimal README
 - some TODOs
 - server and request handler framework
 - contribs: file serving, request logging
 - server examples
 - CI setup
Diffstat (limited to 'contrib/log')
| -rw-r--r-- | contrib/log/log.go | 35 | 
1 files changed, 35 insertions, 0 deletions
| diff --git a/contrib/log/log.go b/contrib/log/log.go new file mode 100644 index 0000000..2ccd3bc --- /dev/null +++ b/contrib/log/log.go @@ -0,0 +1,35 @@ +package log + +import ( +	"context" +	"io" +	"time" + +	kitlog "github.com/go-kit/log" + +	"tildegit.org/tjp/gus/gemini" +) + +func Requests(out io.Writer, logger kitlog.Logger) gemini.Middleware { +	if logger == nil { +		logger = kitlog.NewLogfmtLogger(kitlog.NewSyncWriter(out)) +	} + +	return func(next gemini.Handler) gemini.Handler { +		return func(ctx context.Context, r *gemini.Request) (resp *gemini.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) +		} +	} +} | 
