@@ -16,6 +16,7 @@ import (
1616 "github.com/gol4ng/logger"
1717 "github.com/gol4ng/logger/formatter"
1818 "github.com/gol4ng/logger/handler"
19+ testing_logger "github.com/gol4ng/logger/testing"
1920 "github.com/stretchr/testify/assert"
2021
2122 http_middleware "github.com/gol4ng/logger-http/middleware"
@@ -26,10 +27,7 @@ func TestCorrelationId(t *testing.T) {
2627 rand .New (correlation_id .NewLockedSource (rand .NewSource (1 ))),
2728 )
2829
29- loggerOutput := & Output {}
30- myLogger := logger .NewLogger (
31- handler .Stream (loggerOutput , formatter .NewDefaultFormatter ()),
32- )
30+ myLogger , store := testing_logger .NewLogger ()
3331
3432 request := httptest .NewRequest (http .MethodGet , "http://fake-addr" , nil )
3533 request = request .WithContext (logger .InjectInContext (request .Context (), myLogger ))
@@ -41,35 +39,45 @@ func TestCorrelationId(t *testing.T) {
4139 assert .NotEqual (t , request , innerRequest )
4240 assert .Equal (t , "p1LGIehp1s" , innerRequest .Header .Get (correlation_id .HeaderName ))
4341 handlerRequest = innerRequest
44- logger .FromContext (innerRequest .Context (), nil ).Info ("handler info log" , nil )
42+ logger .FromContext (innerRequest .Context (), nil ).Info ("handler info log" )
4543 })
4644
47- myLogger .Info ("info log before request" , logger .NewContext (). Add ("ctxvalue" , "before" ))
45+ myLogger .Info ("info log before request" , logger .String ("ctxvalue" , "before" ))
4846 http_middleware .CorrelationId ()(h ).ServeHTTP (responseWriter , request )
49- myLogger .Info ("info log after request" , logger .NewContext (). Add ("ctxvalue" , "after" ))
47+ myLogger .Info ("info log after request" , logger .String ("ctxvalue" , "after" ))
5048
5149 respHeaderValue := responseWriter .Header ().Get (correlation_id .HeaderName )
5250 reqContextValue := handlerRequest .Context ().Value (correlation_id .HeaderName ).(string )
5351 assert .Equal (t , "p1LGIehp1s" , request .Header .Get (correlation_id .HeaderName ))
5452 assert .True (t , len (respHeaderValue ) == 10 )
5553 assert .True (t , len (reqContextValue ) == 10 )
5654 assert .True (t , respHeaderValue == reqContextValue )
57- loggerOutput .Constains (t , []string {
58- `<info> info log before request {"ctxvalue":"before"}` ,
59- `<info> handler info log {"Correlation-Id":"p1LGIehp1s"}` ,
60- `<info> info log after request {"ctxvalue":"after"}` ,
61- })
55+
56+ entries := store .GetEntries ()
57+ assert .Len (t , entries , 3 )
58+
59+ entry1 := entries [0 ]
60+ assert .Equal (t , logger .InfoLevel , entry1 .Level )
61+ assert .Equal (t , "info log before request" , entry1 .Message )
62+ assert .Equal (t , "before" , (* entry1 .Context )["ctxvalue" ].Value )
63+
64+ entry2 := entries [1 ]
65+ assert .Equal (t , logger .InfoLevel , entry2 .Level )
66+ assert .Equal (t , "handler info log" , entry2 .Message )
67+ assert .Equal (t , "p1LGIehp1s" , (* entry2 .Context )["Correlation-Id" ].Value )
68+
69+ entry3 := entries [2 ]
70+ assert .Equal (t , logger .InfoLevel , entry3 .Level )
71+ assert .Equal (t , "info log after request" , entry3 .Message )
72+ assert .Equal (t , "after" , (* entry3 .Context )["ctxvalue" ].Value )
6273}
6374
6475func TestCorrelationId_WithoutWrappableLogger (t * testing.T ) {
6576 correlation_id .DefaultIdGenerator = correlation_id .NewRandomIdGenerator (
6677 rand .New (correlation_id .NewLockedSource (rand .NewSource (1 ))),
6778 )
6879
69- loggerOutput := & Output {}
70- myLogger := logger .NewLogger (
71- handler .Stream (loggerOutput , formatter .NewDefaultFormatter ()),
72- )
80+ myLogger , store := testing_logger .NewLogger ()
7381
7482 request := httptest .NewRequest (http .MethodGet , "http://fake-addr" , nil )
7583 // WE DO NOT INJECT LOGGER IN REQUEST CONTEXT
@@ -85,11 +93,11 @@ func TestCorrelationId_WithoutWrappableLogger(t *testing.T) {
8593 assert .Nil (t , logger .FromContext (innerRequest .Context (), nil ))
8694 })
8795
88- myLogger .Info ("info log before request" , logger .NewContext (). Add ("ctxvalue" , "before" ))
96+ myLogger .Info ("info log before request" , logger .String ("ctxvalue" , "before" ))
8997 output := getStdout (func () {
9098 http_middleware .CorrelationId ()(h ).ServeHTTP (responseRecorder , request )
9199 })
92- myLogger .Info ("info log after request" , logger .NewContext (). Add ("ctxvalue" , "after" ))
100+ myLogger .Info ("info log after request" , logger .String ("ctxvalue" , "after" ))
93101
94102 respHeaderValue := responseRecorder .Header ().Get (correlation_id .HeaderName )
95103 reqContextValue := handlerRequest .Context ().Value (correlation_id .HeaderName ).(string )
@@ -100,10 +108,18 @@ func TestCorrelationId_WithoutWrappableLogger(t *testing.T) {
100108 assert .Contains (t , output , "correlationId need a wrappable logger /" )
101109 assert .Contains (t , output , "/src/github.com/gol4ng/logger-http/middleware/correlation_id_test.go:" )
102110
103- loggerOutput .Constains (t , []string {
104- `<info> info log before request {"ctxvalue":"before"}` ,
105- `<info> info log after request {"ctxvalue":"after"}` ,
106- })
111+ entries := store .GetEntries ()
112+ assert .Len (t , entries , 2 )
113+
114+ entry1 := entries [0 ]
115+ assert .Equal (t , logger .InfoLevel , entry1 .Level )
116+ assert .Equal (t , "info log before request" , entry1 .Message )
117+ assert .Equal (t , "before" , (* entry1 .Context )["ctxvalue" ].Value )
118+
119+ entry2 := entries [1 ]
120+ assert .Equal (t , logger .InfoLevel , entry2 .Level )
121+ assert .Equal (t , "info log after request" , entry2 .Message )
122+ assert .Equal (t , "after" , (* entry2 .Context )["ctxvalue" ].Value )
107123}
108124
109125// Use to get os.Stdout
@@ -147,7 +163,7 @@ func ExampleCorrelationId() {
147163 port := ":5001"
148164
149165 myLogger := logger .NewLogger (
150- handler .Stream (os .Stdout , formatter .NewDefaultFormatter ()),
166+ handler .Stream (os .Stdout , formatter .NewDefaultFormatter (formatter . WithContext ( true ) )),
151167 )
152168
153169 // we recommend to use MiddlewareStack to simplify managing all wanted middlewares
@@ -164,7 +180,7 @@ func ExampleCorrelationId() {
164180
165181 h := http .HandlerFunc (func (writer http.ResponseWriter , innerRequest * http.Request ) {
166182 l := logger .FromContext (innerRequest .Context (), myLogger )
167- l .Info ("handler log info" , nil )
183+ l .Info ("handler log info" )
168184 })
169185
170186 go func () {
0 commit comments