You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2016/08/05 19:13:00 UTC
svn commit: r1755373 - in /jmeter/trunk: ./ res/maven/
src/core/org/apache/jmeter/logging/ src/core/org/slf4j/ src/slf4j-logkit/
src/slf4j-logkit/org/ src/slf4j-logkit/org/apache/
src/slf4j-logkit/org/apache/jmeter/ src/slf4j-logkit/org/apache/jmeter/l...
Author: pmouawad
Date: Fri Aug 5 19:13:00 2016
New Revision: 1755373
URL: http://svn.apache.org/viewvc?rev=1755373&view=rev
Log:
Bug 59777 - Extract slf4j binding into its own jar and make it a jmeter lib
Bugzilla Id: 59777
Added:
jmeter/trunk/res/maven/ApacheJMeter_slf4j_logkit.pom
jmeter/trunk/src/slf4j-logkit/
jmeter/trunk/src/slf4j-logkit/org/
jmeter/trunk/src/slf4j-logkit/org/apache/
jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/
jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/
jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java (with props)
jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java (with props)
jmeter/trunk/src/slf4j-logkit/org/slf4j/
jmeter/trunk/src/slf4j-logkit/org/slf4j/impl/
jmeter/trunk/src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java (with props)
Removed:
jmeter/trunk/src/core/org/apache/jmeter/logging/
jmeter/trunk/src/core/org/slf4j/
Modified:
jmeter/trunk/build.xml
jmeter/trunk/eclipse.classpath
jmeter/trunk/xdocs/changes.xml
Modified: jmeter/trunk/build.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/build.xml?rev=1755373&r1=1755372&r2=1755373&view=diff
==============================================================================
--- jmeter/trunk/build.xml (original)
+++ jmeter/trunk/build.xml Fri Aug 5 19:13:00 2016
@@ -135,6 +135,7 @@
<sourcePath path="${src.components}" />
<sourcePath path="${src.functions}" />
<class location="${lib.dir}/jorphan.jar" />
+ <class location="${lib.dir}/ApacheJMeter_slf4j_logkit.jar"/>
<class location="${dest.jar}/ApacheJMeter_components.jar"/>
<class location="${dest.jar}/ApacheJMeter_components.jar"/>
<class location="${dest.jar}/ApacheJMeter_core.jar"/>
@@ -152,6 +153,7 @@
<class location="${dest.jar}/ApacheJMeter_mongodb.jar"/>
<class location="${dest.jar}/ApacheJMeter_tcp.jar"/>
<class location="${dest.jar.jmeter}/ApacheJMeter.jar" />
+ <sourcePath path="${src.slf4j_logkit}" />
<sourcePath path="${src.jorphan}" />
<sourcePath path="${src.tcp}" />
<sourcePath path="${src.jms}" />
@@ -220,6 +222,7 @@
<property name="src.jms" value="src/protocol/jms"/>
<property name="src.native" value="src/protocol/native"/>
<property name="src.mongodb" value="src/protocol/mongodb"/>
+ <property name="src.slf4j_logkit" value="src/slf4j-logkit"/>
<!-- Where the documentation sources live -->
<property name="src.docs" value="xdocs"/>
@@ -247,6 +250,7 @@
<pathelement location="${src.jms}"/>
<pathelement location="${src.native}"/>
<pathelement location="${src.mongodb}"/>
+ <pathelement location="${src.slf4j_logkit}"/>
</path>
<!-- Temporary build directories: where the .class live -->
@@ -269,6 +273,7 @@
<property name="build.jms" value="build/protocol/jms"/>
<property name="build.native" value="build/protocol/native"/>
<property name="build.mongodb" value="build/protocol/mongodb"/>
+ <property name="build.slf4j_logkit" value="build/slf4j-logkit"/>
<property name="build.test" value="build/test"/>
<property name="build.res" value="build/res"/>
<property name="build.test-res" value="test/resources"/>
@@ -499,12 +504,20 @@
<pathelement location="${lib.dir}/${xstream.jar}"/>
<!-- Generated jars -->
<fileset dir="${lib.dir}" includes="jorphan.jar"/>
+ <fileset dir="${lib.dir}" includes="ApacheJMeter_slf4j_logkit.jar"/>
<!-- API-only jars-->
<fileset dir="${lib.api}" includes="*.jar"/>
<!-- Optional jars -->
<fileset dir="${lib.opt}" includes="*.jar"/>
</path>
+
+ <path id="slf4j_logkit_classpath">
+ <!-- Externally produced jars -->
+ <pathelement location="${lib.dir}/${logkit.jar}"/>
+ <pathelement location="${lib.dir}/${slf4j-api.jar}"/>
+ </path>
+
<!-- Anakia classpath -->
<path id="anakia.classpath">
<pathelement location="${lib.doc}/${velocity.jar}"/>
@@ -816,6 +829,17 @@
</classpath>
</javac>
</target>
+
+ <target name="compile-slf4j_logkit" description="Compile JMeter slf4j LogKit bootstrap classes.">
+ <mkdir dir="${build.slf4j_logkit}"/>
+ <javac srcdir="${src.slf4j_logkit}" destdir="${build.slf4j_logkit}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
+ includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
+ <include name="**/*.java"/>
+ <classpath>
+ <path refid="slf4j_logkit_classpath"/>
+ </classpath>
+ </javac>
+ </target>
<target name="compile-jms" depends="compile-jorphan,compile-core,compile-components"
description="Compile components specific to JMS sampling.">
@@ -860,7 +884,7 @@
</target>
<target name="compile"
- depends="_message_3rdParty,compile-core,compile-components,compile-functions,compile-protocols,compile-monitor,compile-junit,compile-jms,compile-native, compile-mongodb"
+ depends="_message_3rdParty,compile-slf4j_logkit,compile-core,compile-components,compile-functions,compile-protocols,compile-monitor,compile-junit,compile-jms,compile-native, compile-mongodb"
description="Compile everything."/>
<target name="run_gui" depends="package" description="Run the JMeter GUI off the jar files">
@@ -1147,6 +1171,18 @@ run JMeter unless all the JMeter jars ar
<fileset dir="${src.mongodb}" includes="**/*.properties" />
</jar>
+ <!-- slf4j-logkit -->
+ <!-- Ensure that build dir exists, even if slf4j-logkit has not been built -->
+ <mkdir dir="${build.slf4j_logkit}"/>
+ <jar jarfile="${lib.dir}/ApacheJMeter_slf4j_logkit.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
+ <zipfileset file="${resources.meta-inf}/default.notice"
+ fullpath="META-INF/NOTICE" />
+ <zipfileset file="${resources.meta-inf}/default.license"
+ fullpath="META-INF/LICENSE" />
+ <fileset dir="${build.slf4j_logkit}" includes="**/*.class" />
+ <fileset dir="${src.slf4j_logkit}" includes="**/*.properties" />
+ </jar>
+
<jar jarfile="${lib.dir}/jorphan.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
<zipfileset file="${resources.meta-inf}/default.notice"
fullpath="META-INF/NOTICE" />
@@ -1298,6 +1334,7 @@ run JMeter unless all the JMeter jars ar
<include name="${dest.jar}/"/>
<include name="${lib.dir}/bshclient.jar"/>
<include name="${lib.dir}/jorphan.jar"/>
+ <include name="${lib.dir}/ApacheJMeter_slf4j_logkit.jar"/>
<include name="${lib.dir}/junit/test.jar"/>
<include name="${dest.jar.jmeter}/ApacheJMeter.jar"/>
<!-- Help documentation, binary files -->
@@ -1605,6 +1642,7 @@ run JMeter unless all the JMeter jars ar
<fileset dir="${dest.jar}" includes="ApacheJMeter*.jar"/>
<fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/>
<fileset dir="${lib.dir}" includes="jorphan.jar"/>
+ <fileset dir="${lib.dir}" includes="ApacheJMeter_slf4j_logkit.jar"/>
</copy>
<copy tofile="${maven.dir}/ApacheJMeter_junit-test.jar" file="${lib.dir}/junit/test.jar"/>
<!--
@@ -1983,6 +2021,7 @@ run JMeter unless all the JMeter jars ar
<deployfile stem="ApacheJMeter_parent" packaging="pom"/>
<deployfile stem="jorphan"/>
+ <deployfile stem="ApacheJMeter_slf4j_logkit"/>
<deployfile stem="ApacheJMeter"/>
<deployfile stem="ApacheJMeter_components"/>
<deployfile stem="ApacheJMeter_config"/>
@@ -2221,6 +2260,7 @@ run JMeter unless all the JMeter jars ar
<delete quiet="false" failonerror="false">
<fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/>
<fileset dir="${lib.dir}" includes="jorphan.jar"/>
+ <fileset dir="${lib.dir}" includes="ApacheJMeter_slf4j_logkit.jar"/>
<fileset dir="${lib.dir}" includes="bshclient.jar"/>
<fileset dir="${dest.jar}" includes="*.jar"/>
<fileset dir="${build.dir}"/>
Modified: jmeter/trunk/eclipse.classpath
URL: http://svn.apache.org/viewvc/jmeter/trunk/eclipse.classpath?rev=1755373&r1=1755372&r2=1755373&view=diff
==============================================================================
--- jmeter/trunk/eclipse.classpath (original)
+++ jmeter/trunk/eclipse.classpath Fri Aug 5 19:13:00 2016
@@ -42,6 +42,7 @@
<classpathentry kind="src" output="build/protocol/mongodb" path="src/protocol/mongodb"/>
<classpathentry kind="src" output="build/protocol/native" path="src/protocol/native"/>
<classpathentry kind="src" output="build/protocol/tcp" path="src/protocol/tcp"/>
+ <classpathentry kind="src" output="build/slf4j-logkit" path="src/slf4j-logkit"/>
<classpathentry kind="src" output="build/test" path="test/src"/>
<classpathentry kind="lib" path="lib/accessors-smart-1.1.jar"/>
<classpathentry kind="lib" path="lib/asm-5.1.jar"/>
Added: jmeter/trunk/res/maven/ApacheJMeter_slf4j_logkit.pom
URL: http://svn.apache.org/viewvc/jmeter/trunk/res/maven/ApacheJMeter_slf4j_logkit.pom?rev=1755373&view=auto
==============================================================================
--- jmeter/trunk/res/maven/ApacheJMeter_slf4j_logkit.pom (added)
+++ jmeter/trunk/res/maven/ApacheJMeter_slf4j_logkit.pom Fri Aug 5 19:13:00 2016
@@ -0,0 +1,70 @@
+<!--
+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.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.jmeter</groupId>
+ <artifactId>ApacheJMeter_slf4j_logkit</artifactId>
+ <version>@MAVEN.DEPLOY.VERSION@</version>
+ <name>Apache JMeter SLF4J Logkit</name>
+ <!-- Parent poms have to be packaged as pom, not jar -->
+ <packaging>pom</packaging>
+
+ <description>Apache JMeter SLF4K Logkit is open source software, it is a slf4j binding for logkit used by Apache JMeter
+ </description>
+ <url>http://jmeter.apache.org/</url>
+ <inceptionYear>2016</inceptionYear>
+ <licenses>
+ <license>
+ <name>Apache 2</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+ <distribution>repo</distribution>
+ <comments>A business-friendly OSS license</comments>
+ </license>
+ </licenses>
+ <issueManagement>
+ <system>bugzilla</system>
+ <url>https://bz.apache.org/bugzilla/describecomponents.cgi?product=JMeter</url>
+ </issueManagement>
+ <scm>
+ <connection>http://svn.apache.org/repos/asf/jmeter/trunk/</connection>
+ <developerConnection>https://svn.apache.org/repos/asf/jmeter/trunk/</developerConnection>
+ <url>http://svn.apache.org/viewvc/jmeter/trunk/</url>
+ </scm>
+
+
+ <properties>
+ <!-- these must agree with the definitions in build.properties -->
+ <logkit.version>2.0</logkit.version>
+ <slf4j-api.version>1.7.13</slf4j-api.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>logkit</groupId>
+ <artifactId>logkit</artifactId>
+ <version>${logkit.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-api.version}</version>
+ </dependency>
+ </dependencies>
+</project>
Added: jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java?rev=1755373&view=auto
==============================================================================
--- jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java (added)
+++ jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java Fri Aug 5 19:13:00 2016
@@ -0,0 +1,327 @@
+/*
+ * 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.jmeter.logging;
+
+import java.io.Serializable;
+
+import org.apache.log.Logger;
+import org.apache.log.Priority;
+import org.slf4j.helpers.FormattingTuple;
+import org.slf4j.helpers.MarkerIgnoringBase;
+import org.slf4j.helpers.MessageFormatter;
+
+/**
+ * Logkit adapter for slf4j
+ * @since 3.0
+ */
+public class LogkitLoggerAdapter extends MarkerIgnoringBase implements Serializable {
+
+ final transient Logger logger;
+
+ private static final long serialVersionUID = -122848886791823355L;
+
+ /**
+ * @deprecated Only for use by JUnit
+ */
+ @Deprecated // only for Unit test usage
+ public LogkitLoggerAdapter() {
+ super();
+ this.logger = null;
+ }
+
+ LogkitLoggerAdapter(org.apache.log.Logger logkitLogger) {
+ this.logger = logkitLogger;
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#debug(java.lang.String)
+ */
+ @Override
+ public void debug(String msg) {
+ logger.debug(msg);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void debug(String format, Object arg) {
+ if (logger.isDebugEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, arg);
+ logger.log(Priority.DEBUG, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object[])
+ */
+ @Override
+ public void debug(String format, Object... args) {
+ if (logger.isDebugEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, args);
+ logger.log(Priority.DEBUG, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Throwable)
+ */
+ @Override
+ public void debug(String msg, Throwable throwable) {
+ logger.log(Priority.DEBUG, msg, throwable);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void debug(String format, Object arg1, Object arg2) {
+ FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
+ logger.log(Priority.DEBUG, ft.getMessage(), ft.getThrowable());
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#error(java.lang.String)
+ */
+ @Override
+ public void error(String message) {
+ logger.log(Priority.ERROR, message);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void error(String format, Object arg) {
+ if (logger.isErrorEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, arg);
+ logger.log(Priority.ERROR, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object[])
+ */
+ @Override
+ public void error(String format, Object... args) {
+ if (logger.isErrorEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, args);
+ logger.log(Priority.ERROR, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#error(java.lang.String, java.lang.Throwable)
+ */
+ @Override
+ public void error(String message, Throwable throwable) {
+ if (logger.isErrorEnabled()) {
+ logger.log(Priority.ERROR, message, throwable);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void error(String format, Object arg1, Object arg2) {
+ if (logger.isErrorEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
+ logger.log(Priority.ERROR, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#info(java.lang.String)
+ */
+ @Override
+ public void info(String message) {
+ logger.log(Priority.INFO, message);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void info(String format, Object arg1) {
+ if (logger.isInfoEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, arg1);
+ logger.log(Priority.INFO, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object[])
+ */
+ @Override
+ public void info(String format, Object... args) {
+ if (logger.isInfoEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, args);
+ logger.log(Priority.INFO, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#info(java.lang.String, java.lang.Throwable)
+ */
+ @Override
+ public void info(String message, Throwable throwable) {
+ logger.log(Priority.INFO, message, throwable);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void info(String format, Object arg1, Object arg2) {
+ if (logger.isInfoEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
+ logger.log(Priority.INFO, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#isDebugEnabled()
+ */
+ @Override
+ public boolean isDebugEnabled() {
+ return logger.isDebugEnabled();
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#isErrorEnabled()
+ */
+ @Override
+ public boolean isErrorEnabled() {
+ return logger.isErrorEnabled();
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#isInfoEnabled()
+ */
+ @Override
+ public boolean isInfoEnabled() {
+ return logger.isInfoEnabled();
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#isTraceEnabled()
+ */
+ @Override
+ public boolean isTraceEnabled() {
+ return logger.isDebugEnabled();
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#isWarnEnabled()
+ */
+ @Override
+ public boolean isWarnEnabled() {
+ return logger.isWarnEnabled();
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#warn(java.lang.String)
+ */
+ @Override
+ public void warn(String message) {
+ logger.log(Priority.WARN, message);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void warn(String format, Object arg) {
+ if (logger.isWarnEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, arg);
+ logger.log(Priority.WARN, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object[])
+ */
+ @Override
+ public void warn(String format, Object... args) {
+ if (logger.isWarnEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, args);
+ logger.log(Priority.WARN, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Throwable)
+ */
+ @Override
+ public void warn(String message, Throwable throwable) {
+ logger.log(Priority.WARN, message, throwable);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void warn(String format, Object arg1, Object arg2) {
+ if (logger.isWarnEnabled()) {
+ FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
+ logger.log(Priority.WARN, ft.getMessage(), ft.getThrowable());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#trace(java.lang.String)
+ */
+ @Override
+ public void trace(String message) {
+ debug(message);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void trace(String format, Object arg) {
+ debug(format, arg);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object[])
+ */
+ @Override
+ public void trace(String format, Object... args) {
+ debug(format, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Throwable)
+ */
+ @Override
+ public void trace(String message, Throwable throwable) {
+ debug(message, throwable);
+ }
+
+ /* (non-Javadoc)
+ * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void trace(String format, Object arg1, Object arg2) {
+ debug(format, arg1, arg2);
+ }
+}
Propchange: jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java?rev=1755373&view=auto
==============================================================================
--- jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java (added)
+++ jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java Fri Aug 5 19:13:00 2016
@@ -0,0 +1,69 @@
+/*
+ * 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.jmeter.logging;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log.Hierarchy;
+import org.slf4j.ILoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * Implementation of {@link ILoggerFactory} for Logkit
+ * @since 3.0
+ */
+public class LogkitLoggerFactory implements ILoggerFactory {
+ // key: name (String), value: a Log4jLogger;
+ private final Map<String, Logger> loggerMap;
+
+ /**
+ *
+ */
+ public LogkitLoggerFactory() {
+ loggerMap = new HashMap<>();
+ }
+
+ /**
+ *
+ * @see org.slf4j.ILoggerFactory#getLogger(java.lang.String)
+ */
+ @Override
+ public Logger getLogger(String name) {
+ Logger slf4jLogger = null;
+ if(name == null) {
+ name = Logger.ROOT_LOGGER_NAME;
+ }
+ // protect against concurrent access of loggerMap
+ synchronized (this) {
+ slf4jLogger = loggerMap.get(name);
+ if (slf4jLogger == null) {
+ org.apache.log.Logger logkitLogger;
+ if (name.equalsIgnoreCase(Logger.ROOT_LOGGER_NAME)) {
+ logkitLogger = Hierarchy.getDefaultHierarchy().getRootLogger();
+ } else {
+ logkitLogger = Hierarchy.getDefaultHierarchy().getLoggerFor(name);
+ }
+ slf4jLogger = new LogkitLoggerAdapter(logkitLogger);
+ loggerMap.put(name, slf4jLogger);
+ }
+ }
+ return slf4jLogger;
+ }
+}
Propchange: jmeter/trunk/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jmeter/trunk/src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java?rev=1755373&view=auto
==============================================================================
--- jmeter/trunk/src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java (added)
+++ jmeter/trunk/src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java Fri Aug 5 19:13:00 2016
@@ -0,0 +1,78 @@
+/*
+ * 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.slf4j.impl;
+
+import org.apache.jmeter.logging.LogkitLoggerFactory;
+import org.slf4j.ILoggerFactory;
+import org.slf4j.LoggerFactory;
+import org.slf4j.spi.LoggerFactoryBinder;
+
+/**
+ * The binding of {@link LoggerFactory} class with an actual instance of
+ * {@link ILoggerFactory} is performed using information returned by this class.
+ *
+ * @since 3.0
+ */
+public class StaticLoggerBinder implements LoggerFactoryBinder {
+
+ /**
+ * The unique instance of this class.
+ *
+ */
+ private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder();
+
+ /**
+ * Return the singleton of this class.
+ *
+ * @return the StaticLoggerBinder singleton
+ */
+ public static final StaticLoggerBinder getSingleton() {
+ return SINGLETON;
+ }
+
+ /**
+ * Declare the version of the SLF4J API this implementation is compiled
+ * against. The value of this field is usually modified with each release.
+ */
+ // to avoid constant folding by the compiler, this field must *not* be final
+ public static String REQUESTED_API_VERSION = "1.7"; // !final
+
+ private static final String loggerFactoryClassStr = LogkitLoggerFactory.class
+ .getName();
+
+ /**
+ * The ILoggerFactory instance returned by the {@link #getLoggerFactory}
+ * method should always be the same object
+ */
+ private final ILoggerFactory loggerFactory;
+
+ private StaticLoggerBinder() {
+ loggerFactory = new LogkitLoggerFactory();
+ }
+
+ @Override
+ public ILoggerFactory getLoggerFactory() {
+ return loggerFactory;
+ }
+
+ @Override
+ public String getLoggerFactoryClassStr() {
+ return loggerFactoryClassStr;
+ }
+}
Propchange: jmeter/trunk/src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1755373&r1=1755372&r2=1755373&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Fri Aug 5 19:13:00 2016
@@ -123,6 +123,7 @@ Summary
<li><bug>59918</bug>Ant generated HTML report is broken (extras folder)</li>
<li><bug>57493</bug>Create a documentation page for properties</li>
<li><bug>59924</bug>The log level of XXX package is set to DEBUG if <code>log_level.XXXX</code> property value contains spaces, same for __log function</li>
+ <li><bug>59777</bug>Extract slf4j binding into its own jar and make it a jmeter lib</li>
</ul>
<ch_section>Non-functional changes</ch_section>