...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package baseapp
16
17 import (
18 "net/http"
19 "time"
20
21 "github.com/rcrowley/go-metrics"
22 "github.com/rs/zerolog"
23 )
24
25 const (
26
27
28 nanoTimeFormat = "2006-01-02T15:04:05.000000000Z07:00"
29 )
30
31
32
33
34
35 func DefaultParams(logger zerolog.Logger, metricsPrefix string) []Param {
36 var registry metrics.Registry
37 if metricsPrefix == "" {
38 registry = metrics.NewRegistry()
39 } else {
40 registry = metrics.NewPrefixedRegistry(metricsPrefix)
41 }
42
43 return []Param{
44 WithLogger(logger),
45 WithRegistry(registry),
46 WithMiddleware(DefaultMiddleware(logger, registry)...),
47 WithUTCNanoTime(),
48 WithErrorLogging(RichErrorMarshalFunc),
49 WithMetrics(),
50 }
51 }
52
53
54 func WithLogger(logger zerolog.Logger) Param {
55 return func(b *Server) error {
56 b.logger = logger
57 return nil
58 }
59 }
60
61
62
63 func WithMiddleware(middleware ...func(http.Handler) http.Handler) Param {
64 return func(b *Server) error {
65 b.middleware = middleware
66 return nil
67 }
68 }
69
70
71 func WithUTCNanoTime() Param {
72 return func(b *Server) error {
73 zerolog.TimeFieldFormat = nanoTimeFormat
74 zerolog.TimestampFunc = func() time.Time {
75 return time.Now().UTC()
76 }
77 return nil
78 }
79 }
80
81
82 func WithErrorLogging(marshalFunc func(err error) interface{}) Param {
83 return func(b *Server) error {
84 zerolog.ErrorMarshalFunc = marshalFunc
85 return nil
86 }
87 }
88
89
90 func WithRegistry(registry metrics.Registry) Param {
91 return func(b *Server) error {
92 b.registry = registry
93 return nil
94 }
95 }
96
97
98 func WithMetrics() Param {
99 return func(s *Server) error {
100 s.initFns = append(s.initFns, func(s *Server) { RegisterDefaultMetrics(s.Registry()) })
101 return nil
102 }
103 }
104
105 func WithHTTPServer(server *http.Server) Param {
106 return func(s *Server) error {
107 s.server = server
108 return nil
109 }
110 }
111
View as plain text