You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
buildx/util/logutil/filter.go

37 lines
627 B
Go

package logutil
import (
"io/ioutil"
"strings"
"github.com/sirupsen/logrus"
)
func NewFilter(filters ...string) logrus.Hook {
dl := logrus.New()
dl.SetOutput(ioutil.Discard)
return &logsFilter{
filters: filters,
discardLogger: dl,
}
}
type logsFilter struct {
filters []string
discardLogger *logrus.Logger
}
func (d *logsFilter) Levels() []logrus.Level {
return []logrus.Level{logrus.DebugLevel}
}
func (d *logsFilter) Fire(entry *logrus.Entry) error {
for _, f := range d.filters {
if strings.Contains(entry.Message, f) {
entry.Logger = d.discardLogger
return nil
}
}
return nil
}