ASF Bugzilla – Attachment 34021 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]
Move slf4j binding to its own jar
0001-First-version-of-extraction-of-slf4j-logkit-adapter-.patch (text/plain), 39.93 KB, created by
Felix Schumacher
on 2016-07-07 17:40:39 UTC
(
hide
)
Description:
Move slf4j binding to its own jar
Filename:
MIME Type:
Creator:
Felix Schumacher
Created:
2016-07-07 17:40:39 UTC
Size:
39.93 KB
patch
obsolete
>From 927379c652c963339d58dd5d45d3f36677e7b875 Mon Sep 17 00:00:00 2001 >From: Felix Schumacher <felix.schumacher@internetallee.de> >Date: Thu, 7 Jul 2016 19:13:01 +0200 >Subject: [PATCH] First version of extraction of slf4j-logkit adapter into its > own package. > >--- > build.xml | 32 +- > res/maven/ApacheJMeter_core.pom | 7 +- > res/maven/ApacheJMeter_slf4j_logkit.pom | 39 +++ > .../apache/jmeter/logging/LogkitLoggerAdapter.java | 341 --------------------- > .../apache/jmeter/logging/LogkitLoggerFactory.java | 70 ----- > src/core/org/slf4j/impl/StaticLoggerBinder.java | 78 ----- > .../apache/jmeter/logging/LogkitLoggerAdapter.java | 341 +++++++++++++++++++++ > .../apache/jmeter/logging/LogkitLoggerFactory.java | 70 +++++ > .../org/slf4j/impl/StaticLoggerBinder.java | 78 +++++ > 9 files changed, 565 insertions(+), 491 deletions(-) > create mode 100644 res/maven/ApacheJMeter_slf4j_logkit.pom > delete mode 100644 src/core/org/apache/jmeter/logging/LogkitLoggerAdapter.java > delete mode 100644 src/core/org/apache/jmeter/logging/LogkitLoggerFactory.java > delete mode 100644 src/core/org/slf4j/impl/StaticLoggerBinder.java > create mode 100644 src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java > create mode 100644 src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java > create mode 100644 src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java > >diff --git a/build.xml b/build.xml >index 5e90f95..6152232 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"/> >@@ -859,8 +864,20 @@ > </javac> > </target> > >+ <target name="compile-slf4j_logkit" depends="compile-jorphan" 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> >+ <pathelement location="${build.jorphan}"/> >+ <path refid="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 +1164,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 +2030,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/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..522d875 >--- /dev/null >+++ b/res/maven/ApacheJMeter_slf4j_logkit.pom >@@ -0,0 +1,39 @@ >+<!-- >+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> >+ <parent> >+ <groupId>org.apache.jmeter</groupId> >+ <artifactId>ApacheJMeter_parent</artifactId> >+ <version>@MAVEN.DEPLOY.VERSION@</version> >+ <relativePath>.</relativePath> >+ </parent> >+ <artifactId>ApacheJMeter_slf4j_logkit</artifactId> >+ <name>Apache JMeter slf4j-LogKit adapter</name> >+ >+ <dependencies> >+ <dependency> >+ <groupId>org.apache.jmeter</groupId> >+ <artifactId>jorphan</artifactId> >+ <version>@MAVEN.DEPLOY.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..0fbd8d9 >--- /dev/null >+++ b/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java >@@ -0,0 +1,341 @@ >+/* >+ * 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/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java b/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java >new file mode 100644 >index 0000000..df418c1 >--- /dev/null >+++ b/src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java >@@ -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. >+ * >+ */ >+ >+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/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; >+ } >+} >-- >2.7.4 >
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