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/03/27 15:09:59 UTC

svn commit: r1736745 - in /jmeter/trunk: ./ lib/ res/maven/ src/core/org/apache/jmeter/logging/ src/core/org/slf4j/ src/core/org/slf4j/impl/ xdocs/

Author: pmouawad
Date: Sun Mar 27 13:09:58 2016
New Revision: 1736745

URL: http://svn.apache.org/viewvc?rev=1736745&view=rev
Log:
Bug 59240 - Introduce a slf4j binding for Logback 
Bugzilla Id: 59240

Added:
    jmeter/trunk/src/core/org/apache/jmeter/logging/
    jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerAdapter.java   (with props)
    jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerFactory.java   (with props)
    jmeter/trunk/src/core/org/slf4j/
    jmeter/trunk/src/core/org/slf4j/impl/
    jmeter/trunk/src/core/org/slf4j/impl/StaticLoggerBinder.java   (with props)
Modified:
    jmeter/trunk/build.xml
    jmeter/trunk/eclipse.classpath
    jmeter/trunk/lib/   (props changed)
    jmeter/trunk/lib/aareadme.txt
    jmeter/trunk/res/maven/ApacheJMeter_parent.pom
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/build.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/build.xml?rev=1736745&r1=1736744&r2=1736745&view=diff
==============================================================================
--- jmeter/trunk/build.xml (original)
+++ jmeter/trunk/build.xml Sun Mar 27 13:09:58 2016
@@ -404,7 +404,6 @@
     <include name="${lib.dir}/${rsyntaxtextarea.jar}"/>
     <include name="${lib.dir}/${serializer.jar}"/>
     <include name="${lib.dir}/${slf4j-api.jar}"/>
-    <include name="${lib.dir}/${slf4j-nop.jar}"/>
     <include name="${lib.dir}/${jtidy.jar}"/>
     <include name="${lib.dir}/${tika-core.jar}"/>
     <include name="${lib.dir}/${tika-parsers.jar}"/>
@@ -478,7 +477,6 @@
     <pathelement location="${lib.dir}/${rsyntaxtextarea.jar}"/>
     <pathelement location="${lib.dir}/${serializer.jar}"/>
     <pathelement location="${lib.dir}/${slf4j-api.jar}"/>
-    <pathelement location="${lib.dir}/${slf4j-nop.jar}"/>
     <pathelement location="${lib.dir}/${jtidy.jar}"/>
     <pathelement location="${lib.dir}/${tika-core.jar}"/>
     <pathelement location="${lib.dir}/${tika-parsers.jar}"/>
@@ -2899,7 +2897,6 @@ run JMeter unless all the JMeter jars ar
         <process_jarfile jarname="rsyntaxtextarea"/>
         <process_jarfile jarname="serializer"/>
         <process_jarfile jarname="slf4j-api"/>
-        <process_jarfile jarname="slf4j-nop"/>
         <process_jarfile jarname="jtidy"/>
         <process_jarfile jarname="tika-core"/>
         <process_jarfile jarname="tika-parsers"/>

Modified: jmeter/trunk/eclipse.classpath
URL: http://svn.apache.org/viewvc/jmeter/trunk/eclipse.classpath?rev=1736745&r1=1736744&r2=1736745&view=diff
==============================================================================
--- jmeter/trunk/eclipse.classpath (original)
+++ jmeter/trunk/eclipse.classpath Sun Mar 27 13:09:58 2016
@@ -88,7 +88,6 @@
 	<classpathentry kind="lib" path="lib/rsyntaxtextarea-2.5.8.jar"/>
 	<classpathentry kind="lib" path="lib/serializer-2.7.2.jar"/>
 	<classpathentry kind="lib" path="lib/slf4j-api-1.7.13.jar"/>
-	<classpathentry kind="lib" path="lib/slf4j-nop-1.7.13.jar"/>
 	<classpathentry kind="lib" path="lib/tika-core-1.12.jar"/>
 	<classpathentry kind="lib" path="lib/tika-parsers-1.12.jar"/>
 	<classpathentry kind="lib" path="lib/xalan-2.7.2.jar"/>

Propchange: jmeter/trunk/lib/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Mar 27 13:09:58 2016
@@ -48,7 +48,6 @@ oro-2.0.8.jar
 rhino-1.7.7.1.jar
 serializer-2.7.2.jar
 slf4j-api-1.7.13.jar
-slf4j-nop-1.7.13.jar
 tika-core-1.12.jar
 tika-parsers-1.12.jar
 xalan-2.7.2.jar

Modified: jmeter/trunk/lib/aareadme.txt
URL: http://svn.apache.org/viewvc/jmeter/trunk/lib/aareadme.txt?rev=1736745&r1=1736744&r2=1736745&view=diff
==============================================================================
--- jmeter/trunk/lib/aareadme.txt (original)
+++ jmeter/trunk/lib/aareadme.txt Sun Mar 27 13:09:58 2016
@@ -211,10 +211,11 @@ serialiser-2.7.1
 http://www.apache.org/dyn/closer.cgi/xml/xalan-j
 - xalan
 
-slf4j-api-1.7.13, slf4j-nop-1.7.13
+slf4j-api-1.7.13
 ----------------
 http://www.slf4j.org/
 - jodd-core
+- json-path
 
 tika-1.12
 --------------

Modified: jmeter/trunk/res/maven/ApacheJMeter_parent.pom
URL: http://svn.apache.org/viewvc/jmeter/trunk/res/maven/ApacheJMeter_parent.pom?rev=1736745&r1=1736744&r2=1736745&view=diff
==============================================================================
--- jmeter/trunk/res/maven/ApacheJMeter_parent.pom (original)
+++ jmeter/trunk/res/maven/ApacheJMeter_parent.pom Sun Mar 27 13:09:58 2016
@@ -95,7 +95,6 @@ under the License.
       <mongo-java-driver.version>2.11.3</mongo-java-driver.version>
       <rsyntaxtextarea.version>2.5.8</rsyntaxtextarea.version>
       <slf4j-api.version>1.7.13</slf4j-api.version>
-      <slf4j-nop.version>1.7.13</slf4j-nop.version>
       <jtidy.version>r938</jtidy.version>
       <tika-core.version>1.12</tika-core.version>
       <tika-parsers.version>1.12</tika-parsers.version>
@@ -376,11 +375,6 @@ under the License.
         <version>${slf4j-api.version}</version>
       </dependency>
       <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-nop</artifactId>
-        <version>${slf4j-nop.version}</version>
-      </dependency>
-      <dependency>
         <groupId>org.freemarker</groupId>
         <artifactId>freemarker</artifactId>
         <version>${freemarker.version}</version>

Added: jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerAdapter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerAdapter.java?rev=1736745&view=auto
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerAdapter.java (added)
+++ jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerAdapter.java Sun Mar 27 13:09:58 2016
@@ -0,0 +1,334 @@
+/*
+ * 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;
+
+/**
+ * Logback adapter for slf4j 
+ * @since 3.0
+ */
+public class LogbackLoggerAdapter extends MarkerIgnoringBase implements Serializable {
+
+    final transient Logger logger;
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -122848886791823355L;
+
+    LogbackLoggerAdapter(org.apache.log.Logger logbackLogger) {
+        this.logger = logbackLogger;
+    }
+
+    /* (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.ERROR, 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);
+    }
+}

Propchange: jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerAdapter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerFactory.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerFactory.java?rev=1736745&view=auto
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerFactory.java (added)
+++ jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerFactory.java Sun Mar 27 13:09:58 2016
@@ -0,0 +1,68 @@
+/*
+ * 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 Logback
+ * @since 3.0
+ */
+public class LogbackLoggerFactory implements ILoggerFactory {
+    // key: name (String), value: a Log4jLoggerAdapter;
+    Map<String, Logger> loggerMap;
+
+    /**
+     * 
+     */
+    public LogbackLoggerFactory() {
+        loggerMap = new HashMap<String, Logger>();
+    }
+
+    /**
+     * 
+     * @see org.slf4j.ILoggerFactory#getLogger(java.lang.String)
+     */
+    @Override
+    public Logger getLogger(String name) {
+        Logger slf4jLogger = null;
+        // protect against concurrent access of loggerMap
+        synchronized (this) {
+            slf4jLogger = loggerMap.get(name);
+            if (slf4jLogger == null) {
+                org.apache.log.Logger logbackLogger;
+                if (name.equalsIgnoreCase(Logger.ROOT_LOGGER_NAME)) {
+                    logbackLogger = Hierarchy.getDefaultHierarchy().getRootLogger();
+                } else {
+                    logbackLogger = LoggingManager.getLoggerFor(name);
+                }
+                slf4jLogger = new LogbackLoggerAdapter(logbackLogger);
+                loggerMap.put(name, slf4jLogger);
+            }
+        }
+        return slf4jLogger;
+    }
+
+}

Propchange: jmeter/trunk/src/core/org/apache/jmeter/logging/LogbackLoggerFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jmeter/trunk/src/core/org/slf4j/impl/StaticLoggerBinder.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/slf4j/impl/StaticLoggerBinder.java?rev=1736745&view=auto
==============================================================================
--- jmeter/trunk/src/core/org/slf4j/impl/StaticLoggerBinder.java (added)
+++ jmeter/trunk/src/core/org/slf4j/impl/StaticLoggerBinder.java Sun Mar 27 13:09:58 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.LogbackLoggerFactory;
+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 = LogbackLoggerFactory.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 LogbackLoggerFactory();
+    }
+
+    @Override
+    public ILoggerFactory getLoggerFactory() {
+        return loggerFactory;
+    }
+
+    @Override
+    public String getLoggerFactoryClassStr() {
+        return loggerFactoryClassStr;
+    }
+}

Propchange: jmeter/trunk/src/core/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=1736745&r1=1736744&r2=1736745&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Sun Mar 27 13:09:58 2016
@@ -343,6 +343,7 @@ Deprecated Libraries dropped or replaced
 <li><bug>59207</bug>Change the font color of errorsOrFatalsLabel to red when an error occurs. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)</li>
 <li><bug>58941</bug>Create a new Starter that runs thread groups in validation mode (1 thread only, 1 iteration, no pause all customizable)</li>
 <li><bug>59236</bug>JMeter Properties : Make some cleanup</li>
+<li><bug>59240</bug>Introduce a slf4j binding for Logback</li>
 </ul>
 <ch_section>Non-functional changes</ch_section>
 <ul>