File tree Expand file tree Collapse file tree 2 files changed +30
-1
lines changed Expand file tree Collapse file tree 2 files changed +30
-1
lines changed Original file line number Diff line number Diff line change @@ -51,3 +51,26 @@ func TestMultiModifyEntry(t *testing.T) {
5151 qt .Assert (t , b .Entries [0 ].Fields [0 ].Name , qt .Equals , "initial" )
5252 qt .Assert (t , b .Entries [0 ].Fields [1 ].Name , qt .Equals , "added" )
5353}
54+
55+ func TestStopEntry (t * testing.T ) {
56+ var a logg.HandlerFunc = func (e * logg.Entry ) error {
57+ if e .Fields [0 ].Value == "v2" {
58+ return logg .ErrStopLogEntry
59+ }
60+ return nil
61+ }
62+
63+ b := memory .New ()
64+
65+ l := logg .New (
66+ logg.Options {
67+ Level : logg .LevelInfo ,
68+ Handler : multi .New (a , b ),
69+ })
70+
71+ l .WithLevel (logg .LevelInfo ).WithField ("v" , "v1" ).Log (logg .String ("text" ))
72+ l .WithLevel (logg .LevelInfo ).WithField ("v" , "v2" ).Log (logg .String ("text" ))
73+ l .WithLevel (logg .LevelInfo ).WithField ("v" , "v3" ).Log (logg .String ("text" ))
74+
75+ qt .Assert (t , b .Entries , qt .HasLen , 2 )
76+ }
Original file line number Diff line number Diff line change @@ -137,6 +137,10 @@ func (l *logger) WithError(err error) *Entry {
137137 return NewEntry (l ).WithError (err )
138138}
139139
140+ // ErrStopLogEntry is a sentinel error that can be returned from a
141+ // handler to stop the entry from being passed to the next handler.
142+ var ErrStopLogEntry = fmt .Errorf ("stop log entry" )
143+
140144// log the message, invoking the handler.
141145func (l * logger ) log (e * Entry , s fmt.Stringer ) {
142146 if e .Level < l .Level {
@@ -148,6 +152,8 @@ func (l *logger) log(e *Entry, s fmt.Stringer) {
148152 e .finalize (finalized , s .String ())
149153
150154 if err := l .Handler .HandleLog (finalized ); err != nil {
151- stdlog .Printf ("error logging: %s" , err )
155+ if err != ErrStopLogEntry {
156+ stdlog .Printf ("error logging: %s" , err )
157+ }
152158 }
153159}
You can’t perform that action at this time.
0 commit comments