Package Logger:

- STD IO Writer Logger: add capabilities of multi filter slice of byte
- STD IO Writer Logger: add function Add..Filter to allow adding filter and not full setting the pattern list

Package HTTP Server:
- Rework filtering logger message to ignore connections reset by peer in server logger
- Rework filtering logger message to ingore all TLS Handshake error in logger
This commit is contained in:
Nicolas JUHEL
2025-05-06 13:28:42 +02:00
parent 70b03e32ca
commit 4a37d3db6a
3 changed files with 48 additions and 8 deletions

View File

@@ -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 {

View File

@@ -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

View File

@@ -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
}
}