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.
		
		
		
		
		
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			669 B
		
	
	
	
		
			Go
		
	
			
		
		
	
	
			39 lines
		
	
	
		
			669 B
		
	
	
	
		
			Go
		
	
| package logutil
 | |
| 
 | |
| import (
 | |
| 	"io"
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/sirupsen/logrus"
 | |
| )
 | |
| 
 | |
| func NewFilter(levels []logrus.Level, filters ...string) logrus.Hook {
 | |
| 	dl := logrus.New()
 | |
| 	dl.SetOutput(io.Discard)
 | |
| 	return &logsFilter{
 | |
| 		levels:        levels,
 | |
| 		filters:       filters,
 | |
| 		discardLogger: dl,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| type logsFilter struct {
 | |
| 	levels        []logrus.Level
 | |
| 	filters       []string
 | |
| 	discardLogger *logrus.Logger
 | |
| }
 | |
| 
 | |
| func (d *logsFilter) Levels() []logrus.Level {
 | |
| 	return d.levels
 | |
| }
 | |
| 
 | |
| 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
 | |
| }
 |