@@ -15,8 +15,9 @@ import (
15
15
)
16
16
17
17
type middleware struct {
18
- enabled bool
19
- verbose bool
18
+ enabled bool
19
+ verbose bool
20
+ enabledOtherParameter bool
20
21
}
21
22
22
23
type Option func (m * middleware )
@@ -35,11 +36,20 @@ func WithVerbose(on bool) Option {
35
36
}
36
37
}
37
38
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
+
38
46
// WithEnv configures the middleware using the environment variable value.
39
47
// For example, WithEnv("BUNDEBUG"):
40
48
// - BUNDEBUG=0 - disables the middleware.
41
49
// - BUNDEBUG=1 - enables the middleware.
42
50
// - BUNDEBUG=2 - enables the middleware and verbose mode.
51
+ // - BUNDEBUG=3 - enables the middleware and logs request heraders , path, ip and params.
52
+
43
53
func FromEnv (key string ) Option {
44
54
if key == "" {
45
55
key = "BUNDEBUG"
@@ -48,14 +58,16 @@ func FromEnv(key string) Option {
48
58
if env , ok := os .LookupEnv (key ); ok {
49
59
m .enabled = env != "" && env != "0"
50
60
m .verbose = env == "2"
61
+ m .enabledOtherParameter = env == "3"
51
62
}
52
63
}
53
64
}
54
65
55
66
func NewMiddleware (opts ... Option ) bunrouter.MiddlewareFunc {
56
67
c := & middleware {
57
- enabled : true ,
58
- verbose : true ,
68
+ enabled : true ,
69
+ verbose : true ,
70
+ enabledOtherParameter : false ,
59
71
}
60
72
for _ , opt := range opts {
61
73
opt (c )
@@ -94,9 +106,12 @@ func (m *middleware) Middleware(next bunrouter.HandlerFunc) bunrouter.HandlerFun
94
106
formatStatus (statusCode ),
95
107
fmt .Sprintf (" %10s " , dur .Round (time .Microsecond )),
96
108
formatMethod (req .Method ),
97
- req .URL .String (),
98
109
)
99
110
111
+ if m .enabledOtherParameter {
112
+ args = append (args , req .URL .String (), req .RemoteAddr )
113
+ }
114
+
100
115
if err != nil {
101
116
typ := reflect .TypeOf (err ).String ()
102
117
args = append (args ,
@@ -106,6 +121,12 @@ func (m *middleware) Middleware(next bunrouter.HandlerFunc) bunrouter.HandlerFun
106
121
}
107
122
108
123
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
+ }
109
130
110
131
return err
111
132
}
0 commit comments