@@ -12,16 +12,15 @@ import (
12
12
"time"
13
13
)
14
14
15
- // mockFailingHandler is a handler that always returns an error from its Handle method.
15
+ // mockFailingHandler is a handler that always returns an error
16
+ // from its Handle method.
16
17
type mockFailingHandler struct {
17
18
Handler
18
19
err error
19
20
}
20
21
21
22
func (h * mockFailingHandler ) Handle (ctx context.Context , r Record ) error {
22
- // It still calls the underlying handler's Handle method to ensure the log can be processed.
23
23
_ = h .Handler .Handle (ctx , r )
24
- // But it always returns a predefined error.
25
24
return h .err
26
25
}
27
26
@@ -94,23 +93,21 @@ func TestMultiHandler(t *testing.T) {
94
93
})
95
94
96
95
t .Run ("Handle propagates errors from handlers" , func (t * testing.T ) {
97
- var buf bytes.Buffer
98
- h1 := NewTextHandler (& buf , nil )
96
+ errFail := errors .New ("mock failing" )
99
97
100
- errFail := errors .New ("fake fail" )
101
- h2 := & mockFailingHandler {
102
- Handler : NewTextHandler (& bytes.Buffer {}, nil ),
103
- err : errFail ,
104
- }
98
+ var buf1 , buf2 bytes.Buffer
99
+ h1 := NewTextHandler (& buf1 , nil )
100
+ h2 := & mockFailingHandler {Handler : NewJSONHandler (& buf2 , nil ), err : errFail }
105
101
106
- multi := MultiHandler (h1 , h2 )
102
+ multi := MultiHandler (h2 , h1 )
107
103
108
104
err := multi .Handle (context .Background (), NewRecord (time .Now (), LevelInfo , "test message" , 0 ))
109
105
if ! errors .Is (err , errFail ) {
110
106
t .Errorf ("Expected error: %v, but got: %v" , errFail , err )
111
107
}
112
108
113
- checkLogOutput (t , buf .String (), "time=" + textTimeRE + ` level=INFO msg="test message"` )
109
+ checkLogOutput (t , buf1 .String (), "time=" + textTimeRE + ` level=INFO msg="test message"` )
110
+ checkLogOutput (t , buf2 .String (), `{"time":"` + jsonTimeRE + `","level":"INFO","msg":"test message"}` )
114
111
})
115
112
116
113
t .Run ("Handle with no handlers" , func (t * testing.T ) {
0 commit comments