diff --git a/httpserver/server.go b/httpserver/server.go index 0201132..ecac069 100644 --- a/httpserver/server.go +++ b/httpserver/server.go @@ -99,9 +99,11 @@ func (o *srv) setServer(ctx context.Context) error { Handler: o.HandlerLoadFct(), } + stdlog.SetIOWriterFilter("connection reset by peer") + if ssl != nil && ssl.LenCertificatePair() > 0 { s.TLSConfig = ssl.TlsConfig("") - stdlog.SetIOWriterFilter("http: TLS handshake error from 127.0.0.1") + stdlog.AddIOWriterFilter("TLS handshake error") } if e := o.cfgGetServer().initServer(s); e != nil { diff --git a/logger/interface.go b/logger/interface.go index ff75924..932fc85 100644 --- a/logger/interface.go +++ b/logger/interface.go @@ -59,8 +59,13 @@ type Logger interface { //GetIOWriterLevel return the minimal level of log message for io.WriterCloser interface GetIOWriterLevel() loglvl.Level - // SetIOWriterFilter allow to filter message that contained the given pattern. If the pattern is found, the log is drop. - SetIOWriterFilter(pattern string) + // SetIOWriterFilter allow to filter message that contained the given pattern. + // When received any message, if one pattern is found, the log is drop. + // If the given pattern is empty, the pattern list is truncated to no one pattern. + SetIOWriterFilter(pattern ...string) + + // SetIOWriterFilter allow to add a filter pattern into the filter message pattern list. + AddIOWriterFilter(pattern ...string) //SetOptions allow to set or update the options for the logger SetOptions(opt *logcfg.Options) error diff --git a/logger/iowritecloser.go b/logger/iowritecloser.go index 517b560..c2e3a0e 100644 --- a/logger/iowritecloser.go +++ b/logger/iowritecloser.go @@ -82,14 +82,43 @@ func (o *logger) GetIOWriterLevel() loglvl.Level { } } -func (o *logger) SetIOWriterFilter(pattern string) { +func (o *logger) SetIOWriterFilter(pattern ...string) { if o == nil { return } else if o.x == nil { return } - o.x.Store(keyFilter, []byte(pattern)) + var p = make([][]byte, 0, len(pattern)) + for _, s := range pattern { + p = append(p, []byte(s)) + } + + o.x.Store(keyFilter, p) +} + +func (o *logger) AddIOWriterFilter(pattern ...string) { + if o == nil { + return + } else if o.x == nil { + return + } + + var p = make([][]byte, 0, len(pattern)) + + if i, l := o.x.Load(keyFilter); !l { + // nothing + } else if v, k := i.([][]byte); !k { + // nothing + } else { + p = append(make([][]byte, 0, len(pattern)+len(v)), v...) + } + + for _, s := range pattern { + p = append(p, []byte(s)) + } + + o.x.Store(keyFilter, p) } func (o *logger) IOWriterFilter(p []byte) []byte { @@ -99,11 +128,15 @@ func (o *logger) IOWriterFilter(p []byte) []byte { return p } else if i, l := o.x.Load(keyFilter); !l { return p - } else if v, k := i.([]byte); !k { + } else if v, k := i.([][]byte); !k { return p - } else if bytes.Contains(p, v) { - return make([]byte, 0) } else { + for _, b := range v { + if bytes.Contains(p, b) { + return make([]byte, 0) + } + } + return p } }