Skip to content

Commit ad52c97

Browse files
committed
Allow duration to be hidden at end of request
Added a bool, HideDuration, to the LogRequest struct that will hide the duration output at the end of the request if set to true.
1 parent 2319e61 commit ad52c97

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

logrequest.go

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ import (
1010
// LogRequest struct
1111
// Pass values from middleware to this struct
1212
type LogRequest struct {
13-
Writer http.ResponseWriter
14-
Request *http.Request
15-
Handler http.Handler
16-
NewLine int
17-
Timestamp bool
13+
Writer http.ResponseWriter
14+
Request *http.Request
15+
Handler http.Handler
16+
NewLine int
17+
Timestamp bool
18+
HideDuration bool
1819
}
1920

2021
type statusWriter struct {
@@ -30,8 +31,13 @@ func (lr LogRequest) ToLogger(logger *log.Logger) {
3031
logger.Printf(`Started %s "%s" %s %s`, lr.Request.Method, lr.Request.URL.RequestURI(), lr.Request.RemoteAddr, lr.Request.Proto)
3132
}
3233

33-
sw, completedDuration := lr.parseRequest()
34-
logger.Printf("Completed %d in %s", sw.statusCode, completedDuration)
34+
if lr.HideDuration {
35+
sw, _ := lr.parseRequest()
36+
logger.Printf("Completed %d", sw.statusCode)
37+
} else {
38+
sw, completedDuration := lr.parseRequest()
39+
logger.Printf("Completed %d in %s", sw.statusCode, completedDuration)
40+
}
3541

3642
if lr.NewLine > 0 {
3743
for i := 1; i <= lr.NewLine; i++ {
@@ -52,7 +58,11 @@ func (lr LogRequest) ToString() map[string]string {
5258
ts["started"] = fmt.Sprintf(`Started %s "%s" %s %s`, lr.Request.Method, lr.Request.URL.RequestURI(), lr.Request.RemoteAddr, lr.Request.Proto)
5359
}
5460

55-
ts["completed"] = fmt.Sprintf("Completed %d in %s", sw.statusCode, completedDuration)
61+
if lr.HideDuration {
62+
ts["completed"] = fmt.Sprintf("Completed %d", sw.statusCode)
63+
} else {
64+
ts["completed"] = fmt.Sprintf("Completed %d in %s", sw.statusCode, completedDuration)
65+
}
5666

5767
return ts
5868
}

logrequest_test.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ func TestToLoggerWithOptionals(t *testing.T) {
8787
if strings.Contains(str.String(), expectedCompletedResults) == false {
8888
t.Errorf("Expected output was incorrect, %s does not contain new line", str.String())
8989
}
90+
91+
notExpectedDurationResults := fmt.Sprintf(`Completed %d in`, http.StatusOK)
92+
if strings.Contains(str.String(), notExpectedDurationResults) == true {
93+
t.Errorf("Expected output was incorrect, %s should not contain %s", str.String(), notExpectedDurationResults)
94+
}
9095
}
9196

9297
func TestToString(t *testing.T) {
@@ -160,6 +165,11 @@ func TestToStringWithOptionals(t *testing.T) {
160165
if strings.Contains(str.String(), expectedStartedResults) == false {
161166
t.Errorf("Expected output was incorrect, %s does not contain %s", str.String(), expectedStartedResults)
162167
}
168+
169+
notExpectedDurationResults := fmt.Sprintf(`Completed %d in`, http.StatusOK)
170+
if strings.Contains(str.String(), notExpectedDurationResults) == true {
171+
t.Errorf("Expected output was incorrect, %s should not contain %s", str.String(), notExpectedDurationResults)
172+
}
163173
}
164174

165175
// Helpers
@@ -185,14 +195,14 @@ func (app *application) logRequestToString(next http.Handler) http.Handler {
185195

186196
func (app *application) logRequestToLoggerWithOptionals(next http.Handler) http.Handler {
187197
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
188-
lr := LogRequest{Request: r, Writer: w, Handler: next, NewLine: 1, Timestamp: true}
198+
lr := LogRequest{Request: r, Writer: w, Handler: next, NewLine: 1, Timestamp: true, HideDuration: true}
189199
lr.ToLogger(app.infoLog)
190200
})
191201
}
192202

193203
func (app *application) logRequestToStringWithOptionals(next http.Handler) http.Handler {
194204
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
195-
lr := LogRequest{Request: r, Writer: w, Handler: next, Timestamp: true}
205+
lr := LogRequest{Request: r, Writer: w, Handler: next, Timestamp: true, HideDuration: true}
196206
app.infoLog.Println(lr.ToString()["started"])
197207
app.infoLog.Println(lr.ToString()["completed"])
198208
})

0 commit comments

Comments
 (0)