@@ -38,6 +38,15 @@ func (l Log) logWithRequest(r *http.Request) logging.Interface {
38
38
return user .LogWith (r .Context (), localLog )
39
39
}
40
40
41
+ func (l Log ) logWithRequestAtLevelf (r * http.Request , level string , format string , args ... interface {}) {
42
+ switch level {
43
+ case "debug" :
44
+ l .logWithRequest (r ).Debugf (format , args ... )
45
+ case "info" :
46
+ l .logWithRequest (r ).Infof (format , args ... )
47
+ }
48
+ }
49
+
41
50
// Wrap implements Middleware
42
51
func (l Log ) Wrap (next http.Handler ) http.Handler {
43
52
return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
@@ -53,33 +62,26 @@ func (l Log) Wrap(next http.Handler) http.Handler {
53
62
wrapped := newBadResponseLoggingWriter (w , & buf )
54
63
next .ServeHTTP (wrapped , r )
55
64
65
+ level := "debug"
66
+ if l .LogRequestsAtInfoLevel {
67
+ level = "info"
68
+ }
69
+
56
70
statusCode , writeErr := wrapped .statusCode , wrapped .writeError
57
71
58
72
if writeErr != nil {
59
73
if errors .Is (writeErr , context .Canceled ) {
60
- if l .LogRequestsAtInfoLevel {
61
- l .logWithRequest (r ).Infof ("%s %s %s, request cancelled: %s ws: %v; %s" , r .Method , uri , time .Since (begin ), writeErr , IsWSHandshakeRequest (r ), headers )
62
- } else {
63
- l .logWithRequest (r ).Debugf ("%s %s %s, request cancelled: %s ws: %v; %s" , r .Method , uri , time .Since (begin ), writeErr , IsWSHandshakeRequest (r ), headers )
64
- }
74
+ l .logWithRequestAtLevelf (r , level , "%s %s %s, request cancelled: %s ws: %v; %s" , r .Method , uri , time .Since (begin ), writeErr , IsWSHandshakeRequest (r ), headers )
65
75
} else {
66
76
l .logWithRequest (r ).Warnf ("%s %s %s, error: %s ws: %v; %s" , r .Method , uri , time .Since (begin ), writeErr , IsWSHandshakeRequest (r ), headers )
67
77
}
68
78
69
79
return
70
80
}
71
81
if 100 <= statusCode && statusCode < 500 || statusCode == http .StatusBadGateway || statusCode == http .StatusServiceUnavailable {
72
- if l .LogRequestsAtInfoLevel {
73
- l .logWithRequest (r ).Infof ("%s %s (%d) %s" , r .Method , uri , statusCode , time .Since (begin ))
74
- } else {
75
- l .logWithRequest (r ).Debugf ("%s %s (%d) %s" , r .Method , uri , statusCode , time .Since (begin ))
76
- }
82
+ l .logWithRequestAtLevelf (r , level , "%s %s (%d) %s" , r .Method , uri , statusCode , time .Since (begin ))
77
83
if l .LogRequestHeaders && headers != nil {
78
- if l .LogRequestsAtInfoLevel {
79
- l .logWithRequest (r ).Infof ("ws: %v; %s" , IsWSHandshakeRequest (r ), string (headers ))
80
- } else {
81
- l .logWithRequest (r ).Debugf ("ws: %v; %s" , IsWSHandshakeRequest (r ), string (headers ))
82
- }
84
+ l .logWithRequestAtLevelf (r , level , "ws: %v; %s" , IsWSHandshakeRequest (r ), string (headers ))
83
85
}
84
86
} else {
85
87
l .logWithRequest (r ).Warnf ("%s %s (%d) %s Response: %q ws: %v; %s" ,
0 commit comments