Skip to content

Commit 2bdf2ba

Browse files
feat: configurable reqlog middleware to log request IP, headers, params
1 parent baae930 commit 2bdf2ba

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

extra/reqlog/middleware.go

+26-5
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ import (
1515
)
1616

1717
type middleware struct {
18-
enabled bool
19-
verbose bool
18+
enabled bool
19+
verbose bool
20+
enabledOtherParameter bool
2021
}
2122

2223
type Option func(m *middleware)
@@ -35,11 +36,20 @@ func WithVerbose(on bool) Option {
3536
}
3637
}
3738

39+
// WithEnabledOtherParameter configures the middleware to log request Path, IP, Request header and Params.
40+
func WithEnabledOtherParameter(on bool) Option {
41+
return func(m *middleware) {
42+
m.enabledOtherParameter = on
43+
}
44+
}
45+
3846
// WithEnv configures the middleware using the environment variable value.
3947
// For example, WithEnv("BUNDEBUG"):
4048
// - BUNDEBUG=0 - disables the middleware.
4149
// - BUNDEBUG=1 - enables the middleware.
4250
// - BUNDEBUG=2 - enables the middleware and verbose mode.
51+
// - BUNDEBUG=3 - enables the middleware and logs request heraders , path, ip and params.
52+
4353
func FromEnv(key string) Option {
4454
if key == "" {
4555
key = "BUNDEBUG"
@@ -48,14 +58,16 @@ func FromEnv(key string) Option {
4858
if env, ok := os.LookupEnv(key); ok {
4959
m.enabled = env != "" && env != "0"
5060
m.verbose = env == "2"
61+
m.enabledOtherParameter = env == "3"
5162
}
5263
}
5364
}
5465

5566
func NewMiddleware(opts ...Option) bunrouter.MiddlewareFunc {
5667
c := &middleware{
57-
enabled: true,
58-
verbose: true,
68+
enabled: true,
69+
verbose: true,
70+
enabledOtherParameter: false,
5971
}
6072
for _, opt := range opts {
6173
opt(c)
@@ -94,9 +106,12 @@ func (m *middleware) Middleware(next bunrouter.HandlerFunc) bunrouter.HandlerFun
94106
formatStatus(statusCode),
95107
fmt.Sprintf(" %10s ", dur.Round(time.Microsecond)),
96108
formatMethod(req.Method),
97-
req.URL.String(),
98109
)
99110

111+
if m.enabledOtherParameter {
112+
args = append(args, req.URL.String(), req.RemoteAddr)
113+
}
114+
100115
if err != nil {
101116
typ := reflect.TypeOf(err).String()
102117
args = append(args,
@@ -106,6 +121,12 @@ func (m *middleware) Middleware(next bunrouter.HandlerFunc) bunrouter.HandlerFun
106121
}
107122

108123
fmt.Println(args...)
124+
if m.enabledOtherParameter {
125+
fmt.Println("User-Agent:", req.Header.Get("User-Agent"))
126+
fmt.Println("Referer:", req.Header.Get("Referer"))
127+
fmt.Println("Query Params:", req.URL.Query())
128+
fmt.Println("Body Params:", req.PostForm)
129+
}
109130

110131
return err
111132
}

0 commit comments

Comments
 (0)