Skip to content

Commit 9af1da8

Browse files
feat: req log middleware with individual options to log parameters
1 parent 9421aed commit 9af1da8

File tree

1 file changed

+43
-19
lines changed

1 file changed

+43
-19
lines changed

extra/reqlog/middleware.go

Lines changed: 43 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@ import (
1515
)
1616

1717
type middleware struct {
18-
enabled bool
19-
verbose bool
20-
enabledOtherParameter bool
18+
enabled bool
19+
verbose bool
20+
enabledReferer bool
21+
enabledRemoteAddr bool
22+
enabledQuery bool
2123
}
2224

2325
type Option func(m *middleware)
@@ -36,10 +38,24 @@ func WithVerbose(on bool) Option {
3638
}
3739
}
3840

39-
// WithEnabledOtherParameter configures the middleware to log request Path, IP, Request header and Params.
40-
func WithEnabledOtherParameter(on bool) Option {
41+
// WithEnabledReferer configures the middleware to log request referer.
42+
func WithEnabledReferer(on bool) Option {
4143
return func(m *middleware) {
42-
m.enabledOtherParameter = on
44+
m.enabledReferer = on
45+
}
46+
}
47+
48+
// WithEnabledRemoteAddr configures the middleware to log request address.
49+
func WithEnabledRemoteAddr(on bool) Option {
50+
return func(m *middleware) {
51+
m.enabledRemoteAddr = on
52+
}
53+
}
54+
55+
// WithEnabledQuery configures the middleware to log request query params.
56+
func WithEnabledQuery(on bool) Option {
57+
return func(m *middleware) {
58+
m.enabledQuery = on
4359
}
4460
}
4561

@@ -48,7 +64,9 @@ func WithEnabledOtherParameter(on bool) Option {
4864
// - BUNDEBUG=0 - disables the middleware.
4965
// - BUNDEBUG=1 - enables the middleware.
5066
// - BUNDEBUG=2 - enables the middleware and verbose mode.
51-
// - BUNDEBUG=3 - enables the middleware and logs request headers , path, ip and params.
67+
// - BUNDEBUG=3 - enables the middleware and logs request referer.
68+
// - BUNDEBUG=4 - enables the middleware and logs request remote address.
69+
// - BUNDEBUG=5 - enables the middleware and logs request query params.
5270

5371
func FromEnv(keys ...string) Option {
5472
if len(keys) == 0 {
@@ -59,7 +77,9 @@ func FromEnv(keys ...string) Option {
5977
if env, ok := os.LookupEnv(key); ok {
6078
m.enabled = env != "" && env != "0"
6179
m.verbose = env == "2"
62-
m.enabledOtherParameter = env == "3"
80+
m.enabledReferer = env == "3"
81+
m.enabledRemoteAddr = env == "4"
82+
m.enabledQuery = env == "5"
6383
break
6484
}
6585
}
@@ -68,9 +88,11 @@ func FromEnv(keys ...string) Option {
6888

6989
func NewMiddleware(opts ...Option) bunrouter.MiddlewareFunc {
7090
c := &middleware{
71-
enabled: true,
72-
verbose: true,
73-
enabledOtherParameter: false,
91+
enabled: true,
92+
verbose: true,
93+
enabledReferer: false,
94+
enabledRemoteAddr: false,
95+
enabledQuery: false,
7496
}
7597
for _, opt := range opts {
7698
opt(c)
@@ -111,8 +133,16 @@ func (m *middleware) Middleware(next bunrouter.HandlerFunc) bunrouter.HandlerFun
111133
formatMethod(req.Method),
112134
)
113135

114-
if m.enabledOtherParameter {
115-
args = append(args, req.URL.String(), req.RemoteAddr)
136+
if m.enabledReferer {
137+
args = append(args, req.Header.Get("Referer"))
138+
}
139+
140+
if m.enabledRemoteAddr {
141+
args = append(args, req.URL.String())
142+
}
143+
144+
if m.enabledQuery {
145+
args = append(args, req.URL.Query())
116146
}
117147

118148
if err != nil {
@@ -124,12 +154,6 @@ func (m *middleware) Middleware(next bunrouter.HandlerFunc) bunrouter.HandlerFun
124154
}
125155

126156
fmt.Println(args...)
127-
if m.enabledOtherParameter {
128-
fmt.Println("User-Agent:", req.Header.Get("User-Agent"))
129-
fmt.Println("Referer:", req.Header.Get("Referer"))
130-
fmt.Println("Query Params:", req.URL.Query())
131-
fmt.Println("Body Params:", req.PostForm)
132-
}
133157

134158
return err
135159
}

0 commit comments

Comments
 (0)