...
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