OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / go-kit / kit / examples / stringsvc3 / logging.go
1 package main
2
3 import (
4         "time"
5
6         "github.com/go-kit/kit/log"
7 )
8
9 func loggingMiddleware(logger log.Logger) ServiceMiddleware {
10         return func(next StringService) StringService {
11                 return logmw{logger, next}
12         }
13 }
14
15 type logmw struct {
16         logger log.Logger
17         StringService
18 }
19
20 func (mw logmw) Uppercase(s string) (output string, err error) {
21         defer func(begin time.Time) {
22                 _ = mw.logger.Log(
23                         "method", "uppercase",
24                         "input", s,
25                         "output", output,
26                         "err", err,
27                         "took", time.Since(begin),
28                 )
29         }(time.Now())
30
31         output, err = mw.StringService.Uppercase(s)
32         return
33 }
34
35 func (mw logmw) Count(s string) (n int) {
36         defer func(begin time.Time) {
37                 _ = mw.logger.Log(
38                         "method", "count",
39                         "input", s,
40                         "n", n,
41                         "took", time.Since(begin),
42                 )
43         }(time.Now())
44
45         n = mw.StringService.Count(s)
46         return
47 }