1
1
package logger
2
2
3
3
import (
4
+ "fmt"
4
5
"time"
5
6
6
7
"github.com/gofiber/fiber/v2"
@@ -12,42 +13,42 @@ const (
12
13
)
13
14
14
15
func FiberMiddleware (logger zerolog.Logger ) fiber.Handler {
15
-
16
16
return func (c * fiber.Ctx ) error {
17
-
18
17
log := logger .With ().Logger ()
19
18
20
19
// if traceparent is present, add it to the log
21
20
if traceparent := c .Get (TraceparentHeaderName , "" ); traceparent != "" {
22
21
log = logger .With ().Str ("req_trace_parent" , traceparent ).Logger ()
23
22
}
24
-
25
23
ctx := log .WithContext (c .UserContext ())
26
24
c .SetUserContext (ctx )
27
25
28
26
start := time .Now ()
29
27
30
- msg := ""
28
+ msg := "Request "
31
29
err := c .Next ()
32
30
if err != nil {
33
31
msg = err .Error ()
34
32
_ = c .SendStatus (fiber .StatusInternalServerError )
35
33
}
36
34
37
35
log = log .With ().
38
- Int ("status" , c .Response ().StatusCode ()).
39
- Str ("latency" , time .Since (start ).String ()).
40
- Str ("method" , c .Method ()).
41
- Str ("path" , c .Path ()).
42
- Str ("protocol" , c .Protocol ()).
36
+ Int ("req_status" , c .Response ().StatusCode ()).
37
+ Str ("req_latency" , fmt .Sprintf ("%.3f" , float64 (time .Since (start ).Microseconds ())/ 1000 )).
38
+ Str ("req_method" , c .Method ()).
39
+ Str ("req_ip" , c .IP ()).
40
+ Str ("req_path" , c .Path ()).
41
+ Str ("req_proto" , c .Protocol ()).
42
+ Str ("req_user_agent" , c .Get (fiber .HeaderUserAgent )).
43
43
Logger ()
44
44
45
45
// Set loglevel based on status code
46
- if c .Response ().StatusCode () >= fiber .StatusInternalServerError {
46
+ switch {
47
+ case c .Response ().StatusCode () >= fiber .StatusInternalServerError :
47
48
log .Error ().Msg (msg )
48
- } else if c .Response ().StatusCode () >= fiber .StatusBadRequest {
49
+ case c .Response ().StatusCode () >= fiber .StatusBadRequest :
49
50
log .Warn ().Msg (msg )
50
- } else {
51
+ default :
51
52
log .Info ().Msg (msg )
52
53
}
53
54
0 commit comments