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