github.com/fafucoder/cilium@v1.6.11/test/config/logs.go (about)

     1  package config
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"os"
     7  
     8  	ginkgo "github.com/cilium/cilium/test/ginkgo-ext"
     9  
    10  	"github.com/sirupsen/logrus"
    11  )
    12  
    13  var (
    14  	// Formatter is the format configuration to write logs into text
    15  	Formatter = logrus.TextFormatter{
    16  		DisableTimestamp: false,
    17  	}
    18  
    19  	// TestLogWriter is a buffer in which all logs generated by a test are
    20  	// stored
    21  	TestLogWriter bytes.Buffer
    22  	// TestLogFileName is the file name to dump `TestLogWriter` content when
    23  	// test finish
    24  	TestLogFileName = "test-output.log"
    25  )
    26  
    27  // TestLogWriterReset resets the current buffer
    28  func TestLogWriterReset() {
    29  	TestLogWriter.Reset()
    30  }
    31  
    32  // LogHook to send logs via `ginkgo.GinkgoWriter`.
    33  type LogHook struct{}
    34  
    35  // Levels defined levels to send logs to FireAction
    36  func (h *LogHook) Levels() []logrus.Level {
    37  	return []logrus.Level{
    38  		logrus.WarnLevel,
    39  		logrus.ErrorLevel,
    40  		logrus.FatalLevel,
    41  		logrus.PanicLevel,
    42  	}
    43  }
    44  
    45  // Fire is a callback function used by logrus to write logs that match in
    46  // the given by `Levels` method
    47  func (h *LogHook) Fire(entry *logrus.Entry) (err error) {
    48  	line, err := Formatter.Format(entry)
    49  	if err == nil {
    50  		fmt.Fprintf(ginkgo.GinkgoWriter, string(line))
    51  	} else {
    52  		fmt.Fprintf(os.Stderr, "LogHook.Fire: unable to format log entry (%v)", err)
    53  	}
    54  	return
    55  }