You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/05/08 17:34:06 UTC

logging-log4j2 git commit: LOG4J2-1179 added benchmarks for performance page (Log4j2 appenders-only comparison)

Repository: logging-log4j2
Updated Branches:
  refs/heads/master b6a6a1f9a -> 6e983a255


LOG4J2-1179 added benchmarks for performance page (Log4j2 appenders-only comparison)


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/6e983a25
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/6e983a25
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/6e983a25

Branch: refs/heads/master
Commit: 6e983a2558e9f49b3b517c926f1b4cc0827e9c3a
Parents: b6a6a1f
Author: rpopma <rp...@apache.org>
Authored: Mon May 9 02:34:31 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Mon May 9 02:34:31 2016 +0900

----------------------------------------------------------------------
 .../jmh/Log4j2AppenderComparisonBenchmark.java  | 117 +++++++++++++++++++
 .../resources/log4j2-appenderComparison.xml     |  65 +++++++++++
 2 files changed, 182 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6e983a25/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
new file mode 100644
index 0000000..4f943e3
--- /dev/null
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.perf.jmh;
+
+import java.io.File;
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Level;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+/**
+ * Benchmarks Log4j 2's Console, File, RandomAccessFile, MemoryMappedFile and Rewrite appender.
+ */
+// HOW TO RUN THIS TEST
+// java -jar log4j-perf/target/benchmarks.jar ".*Log4j2AppenderComparisonBenchmark.*" -f 1 -wi 10 -i 20
+//
+// RUNNING THIS TEST WITH 4 THREADS:
+// java -jar log4j-perf/target/benchmarks.jar ".*Log4j2AppenderComparisonBenchmark.*" -f 1 -wi 10 -i 20 -t 4
+@State(Scope.Thread)
+public class Log4j2AppenderComparisonBenchmark {
+    public static final String MESSAGE = "Short message";
+
+    private Logger file;
+    private Logger raf;
+    private Logger mmap;
+    private Logger console;
+    private Logger noop;
+    private Logger rewrite;
+
+    @Setup
+    public void setUp() throws Exception {
+        System.setProperty("log4j.configurationFile", "log4j2-appenderComparison.xml");
+        deleteLogFiles();
+
+        file = LogManager.getLogger("FileLogger");
+        raf = LogManager.getLogger("RAFLogger");
+        mmap = LogManager.getLogger("MMapLogger");
+        console = LogManager.getLogger("ConsoleLogger");
+        noop = LogManager.getLogger("NoopLogger");
+        rewrite = LogManager.getLogger("RewriteLogger");
+    }
+
+    @TearDown
+    public void tearDown() {
+        System.clearProperty("log4j.configurationFile");
+        deleteLogFiles();
+    }
+
+    private void deleteLogFiles() {
+        File log4j2File = new File ("target/testlog4j2.log");
+        log4j2File.delete();
+        File log4jRandomFile = new File ("target/testRandomlog4j2.log");
+        log4jRandomFile.delete();
+        File mmapFile = new File ("target/MemoryMappedFileAppenderTest.log");
+        mmapFile.delete();
+    }
+
+    @BenchmarkMode(Mode.Throughput)
+    @OutputTimeUnit(TimeUnit.SECONDS)
+    @Benchmark
+    public void raf() {
+        raf.debug(MESSAGE);
+    }
+
+
+    @BenchmarkMode(Mode.Throughput)
+    @OutputTimeUnit(TimeUnit.SECONDS)
+    @Benchmark
+    public void file() {
+        file.debug(MESSAGE);
+    }
+
+    @BenchmarkMode(Mode.Throughput)
+    @OutputTimeUnit(TimeUnit.SECONDS)
+    @Benchmark
+    public void mmap() {
+        mmap.debug(MESSAGE);
+    }
+
+    @BenchmarkMode(Mode.Throughput)
+    @OutputTimeUnit(TimeUnit.SECONDS)
+    @Benchmark
+    public void noop() {
+        noop.debug(MESSAGE);
+    }
+
+    @BenchmarkMode(Mode.Throughput)
+    @OutputTimeUnit(TimeUnit.SECONDS)
+    @Benchmark
+    public void rewrite() {
+        rewrite.debug(MESSAGE);
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6e983a25/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/resources/log4j2-appenderComparison.xml b/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
new file mode 100644
index 0000000..2fb6291
--- /dev/null
+++ b/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<Configuration name="XMLPerfTest" status="warn">
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
+        </Console>
+        <File name="File" fileName="target/testlog4j2.log" immediateFlush="false">
+            <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
+        </File>
+        <RandomAccessFile name="RandomAccessFile" fileName="target/testRandomlog4j2.log" immediateFlush="false">
+            <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
+        </RandomAccessFile>
+        <MemoryMappedFile name="MemoryMappedFile"
+                fileName="target/MemoryMappedFileAppenderTest.log"
+                immediateFlush="false" append="false">
+            <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
+        </MemoryMappedFile>
+        <CountingNoOp name="NoOp">
+        </CountingNoOp>
+        <Rewrite name="Rewrite">
+            <AppenderRef ref="NoOp"/>
+            <LoggerNameLevelRewritePolicy loggerName="RewriteLogger">
+                <KeyValuePair key="INFO" value="DEBUG"/>
+                <KeyValuePair key="DEBUG" value="ERROR"/>
+            </LoggerNameLevelRewritePolicy>
+        </Rewrite>
+      </Appenders>
+    <Loggers>
+        <Logger name="RAFLogger" level="debug" additivity="false">
+            <AppenderRef ref="RandomAccessFile"/>
+        </Logger>
+        <Logger name="MMapLogger" level="debug" additivity="false">
+            <AppenderRef ref="MemoryMappedFile"/>
+        </Logger>
+        <Logger name="FileLogger" level="debug" additivity="false">
+            <AppenderRef ref="File"/>
+        </Logger>
+        <Logger name="ConsoleLogger" level="debug" additivity="false">
+            <AppenderRef ref="Console"/>
+        </Logger>
+        <Logger name="NoopLogger" level="debug" additivity="false">
+            <AppenderRef ref="NoOp"/>
+        </Logger>
+        <Logger name="RewriteLogger" level="debug" additivity="false">
+            <AppenderRef ref="Rewrite"/>
+        </Logger>
+    </Loggers>
+</Configuration>
\ No newline at end of file