github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/logging/loggers/filter_logger.go (about)

     1  package loggers
     2  
     3  import (
     4  	"github.com/go-kit/kit/log"
     5  	"github.com/hyperledger/burrow/logging/structure"
     6  )
     7  
     8  // Filter logger allows us to filter lines logged to it before passing on to underlying
     9  // output logger
    10  // Creates a logger that removes lines from output when the predicate evaluates true
    11  func FilterLogger(outputLogger log.Logger, predicate func(keyvals []interface{}) bool) log.Logger {
    12  	return log.LoggerFunc(func(keyvals ...interface{}) error {
    13  		// Always forward signals
    14  		if structure.Signal(keyvals) != "" || !predicate(keyvals) {
    15  			return outputLogger.Log(keyvals...)
    16  		}
    17  		return nil
    18  	})
    19  }