1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.perf.jmh;
18
19 import org.apache.logging.log4j.Level;
20 import org.apache.logging.log4j.core.LogEvent;
21 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
22 import org.apache.logging.log4j.message.Message;
23 import org.apache.logging.log4j.message.SimpleMessage;
24 import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
25 import org.openjdk.jmh.annotations.Scope;
26 import org.openjdk.jmh.annotations.Setup;
27 import org.openjdk.jmh.annotations.State;
28 import org.openjdk.jmh.logic.BlackHole;
29
30 import java.io.Serializable;
31
32 @State(Scope.Thread)
33 public class Log4jLogEventBenchmark {
34 private static Message MESSAGE;
35 private static Throwable ERROR;
36
37 @Setup
38 public void setup() {
39 MESSAGE = new SimpleMessage("Test message");
40 ERROR = new Exception("test");
41 }
42
43 @GenerateMicroBenchmark
44 public void testBaseline(final BlackHole bh) {
45 }
46
47 @GenerateMicroBenchmark
48 public LogEvent createLogEventWithoutException() {
49 return new Log4jLogEvent("a.b.c", null, "a.b.c", Level.INFO, MESSAGE, null);
50 }
51
52 @GenerateMicroBenchmark
53 public LogEvent createLogEventWithoutExceptionUsingBuilder() {
54 return Log4jLogEvent.newBuilder()
55 .setLoggerName("a.b.c")
56 .setLoggerFqcn("a.b.c")
57 .setLevel(Level.INFO)
58 .setMessage(MESSAGE)
59 .build();
60 }
61
62 @GenerateMicroBenchmark
63 public LogEvent createLogEventWithExceptionUsingBuilder() {
64 return Log4jLogEvent.newBuilder()
65 .setLoggerName("a.b.c")
66 .setLoggerFqcn("a.b.c")
67 .setLevel(Level.INFO)
68 .setMessage(MESSAGE)
69 .setThrown(ERROR)
70 .build();
71 }
72
73 @GenerateMicroBenchmark
74 public StackTraceElement getSourceLocationOfLogEvent() {
75 final LogEvent event = Log4jLogEvent.newBuilder()
76 .setLoggerName(this.getClass().getName())
77 .setLoggerFqcn(this.getClass().getName())
78 .setLevel(Level.INFO)
79 .setMessage(MESSAGE)
80 .build();
81 event.setIncludeLocation(true);
82 return event.getSource();
83 }
84
85 @GenerateMicroBenchmark
86 public Serializable createSerializableLogEventProxyWithoutException() {
87 final Log4jLogEvent event = new Log4jLogEvent("a.b.c", null, "a.b.c", Level.INFO, MESSAGE, null);
88 return Log4jLogEvent.serialize(event, false);
89 }
90
91 @GenerateMicroBenchmark
92 public Serializable createSerializableLogEventProxyWithException(final BlackHole bh) {
93 final Log4jLogEvent event = new Log4jLogEvent("a.b.c", null, "a.b.c", Level.INFO, MESSAGE, ERROR);
94 return Log4jLogEvent.serialize(event, false);
95 }
96
97
98
99
100
101
102
103
104
105
106
107
108 }