ASF Bugzilla – Attachment 34086 Details for
Bug 59777
Extract slf4j binding into its own jar and make it a jmeter lib
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Version 3 of patch
bz59777-v3.diff (text/plain), 40.32 KB, created by
Felix Schumacher
on 2016-08-01 19:25:01 UTC
(
hide
)
Description:
Version 3 of patch
Filename:
MIME Type:
Creator:
Felix Schumacher
Created:
2016-08-01 19:25:01 UTC
Size:
40.32 KB
patch
obsolete
>diff --git a/build.xml b/build.xml >index 5e90f95..1f7dd70 100644 >--- a/build.xml >+++ b/build.xml >@@ -134,6 +134,7 @@ > <sourcePath path="${src.mail}" /> > <sourcePath path="${src.components}" /> > <sourcePath path="${src.functions}" /> >+ <sourcePath path="${src.slf4j_logkit}" /> > <class location="${lib.dir}/jorphan.jar" /> > <class location="${dest.jar}/ApacheJMeter_components.jar"/> > <class location="${dest.jar}/ApacheJMeter_components.jar"/> >@@ -151,6 +152,7 @@ > <class location="${dest.jar}/ApacheJMeter_native.jar"/> > <class location="${dest.jar}/ApacheJMeter_mongodb.jar"/> > <class location="${dest.jar}/ApacheJMeter_tcp.jar"/> >+ <class location="${dest.jar}/ApacheJMeter_slf4j_logkit.jar"/> > <class location="${dest.jar.jmeter}/ApacheJMeter.jar" /> > <sourcePath path="${src.jorphan}" /> > <sourcePath path="${src.tcp}" /> >@@ -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"/> >@@ -505,6 +510,12 @@ > <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}"/> >@@ -859,8 +870,19 @@ > </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}" optimize="${optimize}" source="${src.java.version}" 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" >- 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-core,compile-components,compile-functions,compile-protocols,compile-monitor,compile-junit,compile-jms,compile-native, compile-mongodb,compile-slf4j_logkit" > description="Compile everything."/> > > <target name="run_gui" depends="package" description="Run the JMeter GUI off the jar files"> >@@ -1147,6 +1169,18 @@ run JMeter unless all the JMeter jars are added. > <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="${dest.jar}/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" /> >@@ -2001,6 +2035,7 @@ run JMeter unless all the JMeter jars are added. > <deployfile stem="ApacheJMeter_monitors"/> > <deployfile stem="ApacheJMeter_native"/> > <deployfile stem="ApacheJMeter_tcp"/> >+ <deployfile stem="ApacheJMeter_slf4j_logkit"/> > </target> > > <!-- >diff --git a/eclipse.classpath b/eclipse.classpath >index ef7a0d5..5612a78 100644 >--- a/eclipse.classpath >+++ b/eclipse.classpath >@@ -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"/> >diff --git a/res/maven/ApacheJMeter_core.pom b/res/maven/ApacheJMeter_core.pom >index 0b971d6..d26ac41 100644 >--- a/res/maven/ApacheJMeter_core.pom >+++ b/res/maven/ApacheJMeter_core.pom >@@ -35,6 +35,11 @@ under the License. > <artifactId>jorphan</artifactId> > <version>@MAVEN.DEPLOY.VERSION@</version> > </dependency> >+ <dependency> >+ <groupId>org.apache.jmeter</groupId> >+ <artifactId>ApacheJMeter_slf4j_logkit</artifactId> >+ <version>@MAVEN.DEPLOY.VERSION@</version> >+ </dependency> > </dependencies> > >-</project> >\ No newline at end of file >+</project> >diff --git a/res/maven/ApacheJMeter_slf4j_logkit.pom b/res/maven/ApacheJMeter_slf4j_logkit.pom >new file mode 100644 >index 0000000..eca323d >--- /dev/null >+++ b/res/maven/ApacheJMeter_slf4j_logkit.pom >@@ -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> >diff --git a/src/core/org/apache/jmeter/logging/LogkitLoggerAdapter.java b/src/core/org/apache/jmeter/logging/LogkitLoggerAdapter.java >deleted file mode 100644 >index 0fbd8d9..0000000 >--- a/src/core/org/apache/jmeter/logging/LogkitLoggerAdapter.java >+++ /dev/null >@@ -1,341 +0,0 @@ >-/* >- * 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) { >- if (logger.isDebugEnabled()) { >- 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) { >- if (logger.isDebugEnabled()) { >- 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) { >- if (logger.isErrorEnabled()) { >- 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) { >- if (logger.isInfoEnabled()) { >- 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) { >- if (logger.isInfoEnabled()) { >- 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) { >- if (logger.isWarnEnabled()) { >- 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) { >- if (logger.isWarnEnabled()) { >- 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); >- } >-} >diff --git a/src/core/org/apache/jmeter/logging/LogkitLoggerFactory.java b/src/core/org/apache/jmeter/logging/LogkitLoggerFactory.java >deleted file mode 100644 >index df418c1..0000000 >--- a/src/core/org/apache/jmeter/logging/LogkitLoggerFactory.java >+++ /dev/null >@@ -1,70 +0,0 @@ >-/* >- * 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.jorphan.logging.LoggingManager; >-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 = LoggingManager.getLoggerFor(name); >- } >- slf4jLogger = new LogkitLoggerAdapter(logkitLogger); >- loggerMap.put(name, slf4jLogger); >- } >- } >- return slf4jLogger; >- } >-} >diff --git a/src/core/org/slf4j/impl/StaticLoggerBinder.java b/src/core/org/slf4j/impl/StaticLoggerBinder.java >deleted file mode 100644 >index 5edcd73..0000000 >--- a/src/core/org/slf4j/impl/StaticLoggerBinder.java >+++ /dev/null >@@ -1,78 +0,0 @@ >-/* >- * 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; >- } >-} >diff --git a/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java b/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java >new file mode 100644 >index 0000000..d036548 >--- /dev/null >+++ b/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java >@@ -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) { >+ if (logger.isDebugEnabled()) { >+ 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) { >+ 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); >+ } >+} >diff --git a/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java b/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java >new file mode 100644 >index 0000000..dffef66 >--- /dev/null >+++ b/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java >@@ -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; >+ } >+} >diff --git a/src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java b/src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java >new file mode 100644 >index 0000000..5edcd73 >--- /dev/null >+++ b/src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java >@@ -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; >+ } >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 59777
:
34021
|
34083
|
34085
| 34086 |
34087