@@ -19,39 +19,14 @@ import (
19
19
func RequestLogging (config * Config ) func (http.Handler ) http.Handler {
20
20
return func (next http.Handler ) http.Handler {
21
21
fn := func (w http.ResponseWriter , r * http.Request ) {
22
- before := time .Now ()
23
-
24
- traceId := getTraceId (r )
25
- if traceId == "" {
26
- // there is no span yet, so create one
27
- var ctx context.Context
28
- traceId , ctx = generateTraceId (r )
29
- r = r .WithContext (ctx )
30
- }
31
-
32
- traces := fmt .Sprintf ("projects/%s/traces/%s" , config .ProjectId , traceId )
33
-
34
- contextLogger := & ContextLogger {
35
- out : config .ContextLogOut ,
36
- Trace : traces ,
37
- Severity : config .Severity ,
38
- AdditionalData : config .AdditionalData ,
39
- loggedSeverity : make ([]Severity , 0 , 10 ),
40
- Skip : config .Skip ,
41
- }
42
- ctx := context .WithValue (r .Context (), contextLoggerKey , contextLogger )
43
- r = r .WithContext (ctx )
22
+ reserve := NewReserve (config , r )
44
23
45
24
wrw := & wrappedResponseWriter {ResponseWriter : w }
46
25
defer func () {
47
26
// logging
48
- elapsed := time .Since (before )
49
- maxSeverity := contextLogger .maxSeverity ()
50
- err := writeRequestLog (r , config , wrw .status , wrw .responseSize , elapsed , traces , maxSeverity )
51
- if err != nil {
52
- _ , _ = fmt .Fprintln (os .Stderr , err .Error ())
53
- }
27
+ reserve .LastHandling (wrw )
54
28
}()
29
+
55
30
next .ServeHTTP (wrw , r )
56
31
}
57
32
return http .HandlerFunc (fn )
@@ -62,44 +37,18 @@ func RequestLogging(config *Config) func(http.Handler) http.Handler {
62
37
func RequestLoggingWithEcho (config * Config ) echo.MiddlewareFunc {
63
38
return func (next echo.HandlerFunc ) echo.HandlerFunc {
64
39
fn := func (c echo.Context ) error {
65
- before := time .Now ()
66
- r := c .Request ()
67
- traceId := getTraceId (r )
68
- if traceId == "" {
69
- // there is no span yet, so create one
70
- var ctx context.Context
71
- traceId , ctx = generateTraceId (r )
72
- r = r .WithContext (ctx )
73
- }
40
+ reserve := NewReserve (config , c .Request ())
74
41
75
- traces := fmt .Sprintf ("projects/%s/traces/%s" , config .ProjectId , traceId )
76
-
77
- contextLogger := & ContextLogger {
78
- out : config .ContextLogOut ,
79
- Trace : traces ,
80
- Severity : config .Severity ,
81
- AdditionalData : config .AdditionalData ,
82
- loggedSeverity : make ([]Severity , 0 , 10 ),
83
- Skip : config .Skip ,
42
+ wrw := & wrappedResponseWriter {
43
+ ResponseWriter : c .Response ().Writer ,
84
44
}
85
- ctx := context .WithValue (r .Context (), contextLoggerKey , contextLogger )
86
-
87
- r = r .WithContext (ctx )
88
- c .SetRequest (r )
89
-
90
- w := c .Response ().Writer
91
- wrw := & wrappedResponseWriter {ResponseWriter : w }
45
+ wr := echo .NewResponse (wrw , c .Echo ())
92
46
defer func () {
93
47
// logging
94
- elapsed := time .Since (before )
95
- maxSeverity := contextLogger .maxSeverity ()
96
- err := writeRequestLog (r , config , wrw .status , wrw .responseSize , elapsed , traces , maxSeverity )
97
- if err != nil {
98
- _ , _ = fmt .Fprintln (os .Stderr , err .Error ())
99
- }
48
+ reserve .LastHandling (wrw )
100
49
}()
101
50
102
- wr := echo . NewResponse ( wrw , c . Echo () )
51
+ c . SetRequest ( reserve . request )
103
52
c .SetResponse (wr )
104
53
105
54
return next (c )
0 commit comments