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 2017/02/11 08:27:36 UTC

svn commit: r1782553 - in /jmeter/trunk/src: components/org/apache/jmeter/visualizers/backend/ functions/org/apache/jmeter/functions/ protocol/java/org/apache/jmeter/protocol/java/sampler/

Author: pmouawad
Date: Sat Feb 11 08:27:36 2017
New Revision: 1782553

URL: http://svn.apache.org/viewvc?rev=1782553&view=rev
Log:
Bug 60564 - Migrating LogKit to SLF4J - components (1), functions, protocol, test (1/2)
Contributed by Woonsan Ko
This comments #274
Bugzilla Id: 60564

Modified:
    jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/AbstractBackendListenerClient.java
    jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction.java
    jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction2.java
    jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.java
    jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java
    jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java
    jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223Sampler.java

Modified: jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/AbstractBackendListenerClient.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/AbstractBackendListenerClient.java?rev=1782553&r1=1782552&r2=1782553&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/AbstractBackendListenerClient.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/AbstractBackendListenerClient.java Sat Feb 11 08:27:36 2017
@@ -23,6 +23,7 @@ import java.util.concurrent.ConcurrentHa
 
 import org.apache.jmeter.config.Arguments;
 import org.apache.jmeter.samplers.SampleResult;
+import org.apache.jorphan.logging.LoggingManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -54,6 +55,9 @@ import org.slf4j.LoggerFactory;
 public abstract class AbstractBackendListenerClient implements BackendListenerClient {
 
     private static final Logger log = LoggerFactory.getLogger(AbstractBackendListenerClient.class);
+
+    private static final org.apache.log.Logger oldLogger = LoggingManager.getLoggerForClass();
+
     private UserMetric userMetrics = new UserMetric();
     
     private ConcurrentHashMap<String, SamplerMetric> metricsPerSampler = new ConcurrentHashMap<>();
@@ -89,8 +93,20 @@ public abstract class AbstractBackendLis
      * As this class is designed to be subclassed this is useful.
      *
      * @return a Logger instance which can be used for logging
+     * @deprecated Will be removed in 3.3, use {@link AbstractBackendListenerClient#getNewLogger()} 
+     */
+    @Deprecated
+    protected org.apache.log.Logger getLogger() {
+        return oldLogger;
+    }
+
+    /**
+     * Get a Logger instance which can be used by subclasses to log information.
+     * As this class is designed to be subclassed this is useful.
+     *
+     * @return {@link Logger}  instance which can be used for logging
      */
-    protected Logger getLogger() {
+    protected Logger getNewLogger() {
         return log;
     }
 

Modified: jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction.java?rev=1782553&r1=1782552&r2=1782553&view=diff
==============================================================================
--- jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction.java (original)
+++ jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction.java Sat Feb 11 08:27:36 2017
@@ -26,9 +26,9 @@ import org.apache.jmeter.engine.util.Com
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.samplers.Sampler;
 import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
-import org.apache.log.Priority;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.event.Level;
 
 /**
  * <p>
@@ -47,7 +47,7 @@ import org.apache.log.Priority;
  * @since 2.2
  */
 public class LogFunction extends AbstractFunction {
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(LogFunction.class);
 
     private static final List<String> desc = new LinkedList<>();
 
@@ -132,32 +132,52 @@ public class LogFunction extends Abstrac
         }
     }
 
-    // Routine to perform the output (also used by __logn() function)
-    static synchronized void logDetails(Logger l, String s, String prio, Throwable t, String c) {
-        if (prio.equalsIgnoreCase("OUT")) //$NON-NLS-1
-        {
-            printDetails(System.out, s, t, c);
-        } else if (prio.equalsIgnoreCase("ERR")) //$NON-NLS-1
-        {
-            printDetails(System.err, s, t, c);
+    /**
+     * Routine to perform the output (also used by __logn() function)
+     * @param logger {@link Logger}
+     * @param stringToLog String to log
+     * @param priorityString OUT or ERR or Logger priority
+     * @param throwable {@link Throwable}
+     * @param comment If present, it is displayed in the string. Useful for identifying what is being logged.
+     */
+    static synchronized void logDetails(Logger logger, String stringToLog, String priorityString, Throwable throwable,
+            String comment) {
+        String prio = priorityString.trim().toUpperCase();
+
+        if ("OUT".equals(prio)) {//$NON-NLS-1
+            printDetails(System.out, stringToLog, throwable, comment);
+        } else if ("ERR".equals(prio)) {//$NON-NLS-1
+            printDetails(System.err, stringToLog, throwable, comment);
         } else {
-            // N.B. if the string is not recognised, DEBUG is assumed
-            Priority p = Priority.getPriorityForName(prio.trim());
-            if (log.isPriorityEnabled(p)) {// Thread method is potentially expensive
-                String tn = Thread.currentThread().getName();
-                StringBuilder sb = new StringBuilder(40);
-                sb.append(tn);
-                if (c.length()>0){
-                    sb.append(' ');
-                    sb.append(c);
-                } else {
-                    sb.append(DEFAULT_SEPARATOR);
-                }
-                sb.append(s);
-                log.log(p, sb.toString(), t);
+            // N.B. if the string is not recognized, DEBUG is assumed
+            Level prioLevel;
+            try {
+                prioLevel = Level.valueOf(prio);
+            } catch (IllegalArgumentException ignored) {
+                prioLevel = Level.DEBUG;
             }
-        }
 
+            final String threadName = Thread.currentThread().getName();
+            final String separator = (comment.isEmpty()) ? DEFAULT_SEPARATOR : comment;
+
+            switch (prioLevel) {
+            case ERROR:
+                logger.error("{} {} {}", threadName, separator, stringToLog, throwable);
+                break;
+            case WARN:
+                logger.warn("{} {} {}", threadName, separator, stringToLog, throwable);
+                break;
+            case INFO:
+                logger.info("{} {} {}", threadName, separator, stringToLog, throwable);
+                break;
+            case DEBUG:
+                logger.debug("{} {} {}", threadName, separator, stringToLog, throwable);
+                break;
+            case TRACE:
+                logger.trace("{} {} {}", threadName, separator, stringToLog, throwable);
+                break;
+            }
+        }
     }
 
     /** {@inheritDoc} */

Modified: jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction2.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction2.java?rev=1782553&r1=1782552&r2=1782553&view=diff
==============================================================================
--- jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction2.java (original)
+++ jmeter/trunk/src/functions/org/apache/jmeter/functions/LogFunction2.java Sat Feb 11 08:27:36 2017
@@ -26,8 +26,8 @@ import org.apache.jmeter.engine.util.Com
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.samplers.Sampler;
 import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * <p>
@@ -45,7 +45,7 @@ import org.apache.log.Logger;
  * @since 2.2
  */
 public class LogFunction2 extends AbstractFunction {
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(LogFunction2.class);
 
     private static final List<String> desc = new LinkedList<>();
 

Modified: jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.java?rev=1782553&r1=1782552&r2=1782553&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.java (original)
+++ jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.java Sat Feb 11 08:27:36 2017
@@ -20,7 +20,7 @@ package org.apache.jmeter.protocol.java.
 
 import org.apache.jmeter.config.Arguments;
 import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
@@ -51,9 +51,9 @@ import org.slf4j.LoggerFactory;
  *
  */
 public abstract class AbstractJavaSamplerClient implements JavaSamplerClient {
-    private static final org.slf4j.Logger logger = LoggerFactory.getLogger(AbstractJavaSamplerClient.class);
+    private static final Logger log = LoggerFactory.getLogger(AbstractJavaSamplerClient.class);
 
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final org.apache.log.Logger oldLogger = LoggingManager.getLoggerForClass();
 
     /* Implements JavaSamplerClient.setupTest(JavaSamplerContext) */
     @Override
@@ -82,18 +82,18 @@ public abstract class AbstractJavaSample
      * @deprecated Will be removed in 3.3, use {@link AbstractJavaSamplerClient#getNewLogger()} 
      */
     @Deprecated
-    protected Logger getLogger() {
-        return log;
+    protected org.apache.log.Logger getLogger() {
+        return oldLogger;
     }
-    
+
     /**
      * Get a Logger instance which can be used by subclasses to log information.
      * This is the same Logger which is used by the base JavaSampler classes
      * (jmeter.protocol.java).
      *
-     * @return {@link org.slf4j.Logger}  instance which can be used for logging
+     * @return {@link Logger}  instance which can be used for logging
      */
-    protected org.slf4j.Logger getNewLogger() {
-        return logger;
+    protected Logger getNewLogger() {
+        return log;
     }
 }

Modified: jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java?rev=1782553&r1=1782552&r2=1782553&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java (original)
+++ jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java Sat Feb 11 08:27:36 2017
@@ -37,8 +37,8 @@ import org.apache.jmeter.samplers.Sample
 import org.apache.jmeter.testbeans.TestBean;
 import org.apache.jmeter.testelement.TestElement;
 import org.apache.jmeter.util.BSFTestElement;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A sampler which understands BSF
@@ -49,9 +49,9 @@ public class BSFSampler extends BSFTestE
     private static final Set<String> APPLIABLE_CONFIG_CLASSES = new HashSet<>(
             Arrays.asList("org.apache.jmeter.config.gui.SimpleConfigGui"));
 
-    private static final long serialVersionUID = 240L;
+    private static final long serialVersionUID = 241L;
 
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(BSFSampler.class);
 
     public BSFSampler() {
         super();
@@ -63,7 +63,7 @@ public class BSFSampler extends BSFTestE
         final String label = getName();
         final String request = getScript();
         final String fileName = getFilename();
-        log.debug(label + " " + fileName);
+        log.debug("{} {}", label, fileName);
         SampleResult res = new SampleResult();
         res.setSampleLabel(label);
         

Modified: jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java?rev=1782553&r1=1782552&r2=1782553&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java (original)
+++ jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java Sat Feb 11 08:27:36 2017
@@ -31,9 +31,9 @@ import org.apache.jmeter.samplers.Sample
 import org.apache.jmeter.testelement.TestElement;
 import org.apache.jmeter.util.BeanShellInterpreter;
 import org.apache.jmeter.util.BeanShellTestElement;
-import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JMeterException;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A sampler which understands BeanShell
@@ -44,9 +44,9 @@ public class BeanShellSampler extends Be
     private static final Set<String> APPLIABLE_CONFIG_CLASSES = new HashSet<>(
             Arrays.asList("org.apache.jmeter.config.gui.SimpleConfigGui"));
     
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(BeanShellSampler.class);
 
-    private static final long serialVersionUID = 3;
+    private static final long serialVersionUID = 4;
 
     public static final String FILENAME = "BeanShellSampler.filename"; //$NON-NLS-1$
 
@@ -88,7 +88,6 @@ public class BeanShellSampler extends Be
     @Override
     public SampleResult sample(Entry e)// Entry tends to be ignored ...
     {
-        // log.info(getLabel()+" "+getFilename());
         SampleResult res = new SampleResult();
         boolean isSuccessful = false;
         res.setSampleLabel(getName());
@@ -142,13 +141,15 @@ public class BeanShellSampler extends Be
          */
         // but we do trap this error to make tests work better
         catch (NoClassDefFoundError ex) {
-            log.error("BeanShell Jar missing? " + ex.toString());
+            log.error("BeanShell Jar missing? {}", ex.toString());
             res.setResponseCode("501");//$NON-NLS-1$
             res.setResponseMessage(ex.toString());
             res.setStopThread(true); // No point continuing
         } catch (Exception ex) // Mainly for bsh.EvalError
         {
-            log.warn(ex.toString());
+            if (log.isWarnEnabled()) {
+                log.warn("Exception executing script. {}", ex.toString());
+            }
             res.setResponseCode("500");//$NON-NLS-1$
             res.setResponseMessage(ex.toString());
         } finally {
@@ -169,7 +170,9 @@ public class BeanShellSampler extends Be
             try {
                 savedBsh.evalNoLog("interrupt()"); // $NON-NLS-1$
             } catch (JMeterException ignored) {
-                log.debug(getClass().getName() + " : " + ignored.getLocalizedMessage()); // $NON-NLS-1$
+                if (log.isDebugEnabled()) {
+                    log.debug("{} : {}", getClass(), ignored.getLocalizedMessage()); // $NON-NLS-1$
+                }
             }
             return true;
         }

Modified: jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223Sampler.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223Sampler.java?rev=1782553&r1=1782552&r2=1782553&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223Sampler.java (original)
+++ jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223Sampler.java Sat Feb 11 08:27:36 2017
@@ -35,16 +35,16 @@ import org.apache.jmeter.samplers.Sample
 import org.apache.jmeter.testbeans.TestBean;
 import org.apache.jmeter.testelement.TestElement;
 import org.apache.jmeter.util.JSR223TestElement;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class JSR223Sampler extends JSR223TestElement implements Cloneable, Sampler, TestBean, ConfigMergabilityIndicator {
     private static final Set<String> APPLIABLE_CONFIG_CLASSES = new HashSet<>(
             Arrays.asList("org.apache.jmeter.config.gui.SimpleConfigGui"));
 
-    private static final long serialVersionUID = 234L;
+    private static final long serialVersionUID = 235L;
 
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(JSR223Sampler.class);
 
     @Override
     public SampleResult sample(Entry entry) {
@@ -71,7 +71,7 @@ public class JSR223Sampler extends JSR22
                 result.setResponseData(ret.toString(), null);
             }
         } catch (IOException | ScriptException e) {
-            log.error("Problem in JSR223 script "+getName()+", message:"+e, e);
+            log.error("Problem in JSR223 script {}, message: {}", getName(), e, e);
             result.setSuccessful(false);
             result.setResponseCode("500"); // $NON-NLS-1$
             result.setResponseMessage(e.toString());