github.com/goreleaser/goreleaser@v1.25.1/internal/logext/writer.go (about)

     1  package logext
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  
     7  	"github.com/caarlos0/log"
     8  )
     9  
    10  // NewWriter creates a new log writer.
    11  func NewWriter() io.Writer {
    12  	return NewConditionalWriter(false)
    13  }
    14  
    15  // NewConditionalWriter creates a new log writer that only writes when the given condition is met or debug is enabled.
    16  func NewConditionalWriter(condition bool) io.Writer {
    17  	if condition || isDebug() {
    18  		logger, ok := log.Log.(*log.Logger)
    19  		if !ok {
    20  			return os.Stderr
    21  		}
    22  		return logger.Writer
    23  	}
    24  	return io.Discard
    25  }
    26  
    27  func isDebug() bool {
    28  	return logLevel() == log.DebugLevel
    29  }
    30  
    31  func logLevel() log.Level {
    32  	if logger, ok := log.Log.(*log.Logger); ok {
    33  		return logger.Level
    34  	}
    35  	return log.InfoLevel
    36  }