...

Source file src/github.com/sirupsen/logrus/logger_bench_test.go

Documentation: github.com/sirupsen/logrus

     1  package logrus
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"testing"
     7  )
     8  
     9  func BenchmarkDummyLogger(b *testing.B) {
    10  	nullf, err := os.OpenFile("/dev/null", os.O_WRONLY, 0666)
    11  	if err != nil {
    12  		b.Fatalf("%v", err)
    13  	}
    14  	defer nullf.Close()
    15  	doLoggerBenchmark(b, nullf, &TextFormatter{DisableColors: true}, smallFields)
    16  }
    17  
    18  func BenchmarkDummyLoggerNoLock(b *testing.B) {
    19  	nullf, err := os.OpenFile("/dev/null", os.O_WRONLY|os.O_APPEND, 0666)
    20  	if err != nil {
    21  		b.Fatalf("%v", err)
    22  	}
    23  	defer nullf.Close()
    24  	doLoggerBenchmarkNoLock(b, nullf, &TextFormatter{DisableColors: true}, smallFields)
    25  }
    26  
    27  func doLoggerBenchmark(b *testing.B, out *os.File, formatter Formatter, fields Fields) {
    28  	logger := Logger{
    29  		Out:       out,
    30  		Level:     InfoLevel,
    31  		Formatter: formatter,
    32  	}
    33  	entry := logger.WithFields(fields)
    34  	b.RunParallel(func(pb *testing.PB) {
    35  		for pb.Next() {
    36  			entry.Info("aaa")
    37  		}
    38  	})
    39  }
    40  
    41  func doLoggerBenchmarkNoLock(b *testing.B, out *os.File, formatter Formatter, fields Fields) {
    42  	logger := Logger{
    43  		Out:       out,
    44  		Level:     InfoLevel,
    45  		Formatter: formatter,
    46  	}
    47  	logger.SetNoLock()
    48  	entry := logger.WithFields(fields)
    49  	b.RunParallel(func(pb *testing.PB) {
    50  		for pb.Next() {
    51  			entry.Info("aaa")
    52  		}
    53  	})
    54  }
    55  
    56  func BenchmarkLoggerJSONFormatter(b *testing.B) {
    57  	doLoggerBenchmarkWithFormatter(b, &JSONFormatter{})
    58  }
    59  
    60  func BenchmarkLoggerTextFormatter(b *testing.B) {
    61  	doLoggerBenchmarkWithFormatter(b, &TextFormatter{})
    62  }
    63  
    64  func doLoggerBenchmarkWithFormatter(b *testing.B, f Formatter) {
    65  	b.SetParallelism(100)
    66  	log := New()
    67  	log.Formatter = f
    68  	log.Out = ioutil.Discard
    69  	b.RunParallel(func(pb *testing.PB) {
    70  		for pb.Next() {
    71  			log.
    72  				WithField("foo1", "bar1").
    73  				WithField("foo2", "bar2").
    74  				Info("this is a dummy log")
    75  		}
    76  	})
    77  }
    78  

View as plain text