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/10 07:44:48 UTC

svn commit: r1782438 - in /jmeter/trunk/src/core/org/apache/jmeter: plugin/ report/config/ report/core/ report/dashboard/ report/processor/ report/processor/graph/ reporters/

Author: pmouawad
Date: Fri Feb 10 07:44:47 2017
New Revision: 1782438

URL: http://svn.apache.org/viewvc?rev=1782438&view=rev
Log:
Bug 60564 - Migrating LogKit to SLF4J - core/engine,plugin,report,reporters packages (2/2)
Contributed by Woonsan Ko
This closes #270
Bugzilla Id: 60564

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java
    jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java
    jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java
    jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java
    jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
    jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java
    jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java
    jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java
    jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java
    jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java

Modified: jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java Fri Feb 10 07:44:47 2017
@@ -23,13 +23,13 @@ import java.net.URL;
 import javax.swing.ImageIcon;
 
 import org.apache.jmeter.gui.GUIFactory;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public final class PluginManager {
     private static final PluginManager instance = new PluginManager();
 
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(PluginManager.class);
 
     private PluginManager() {
     }
@@ -56,13 +56,13 @@ public final class PluginManager {
             URL resource = classloader.getResource(icon[1].trim());
 
             if (resource == null) {
-                log.warn("Can't find icon for " + icon[0] + " - " + icon[1]);
+                log.warn("Can't find icon for {} - {}", icon[0], icon[1]);
             } else {
                 GUIFactory.registerIcon(icon[0], new ImageIcon(resource));
                 if (icon.length > 2 && icon[2] != null) {
                     URL resource2 = classloader.getResource(icon[2].trim());
                     if (resource2 == null) {
-                        log.info("Can't find disabled icon for " + icon[0] + " - " + icon[2]);
+                        log.info("Can't find disabled icon for {} - {}", icon[0], icon[2]);
                     } else {
                         GUIFactory.registerDisabledIcon(icon[0], new ImageIcon(resource2));
                     }

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java Fri Feb 10 07:44:47 2017
@@ -27,11 +27,11 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.regex.Pattern;
 
-import jodd.props.Props;
-
 import org.apache.commons.lang3.StringUtils;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import jodd.props.Props;
 
 /**
  * The class ReportGeneratorConfiguration describes the configuration of the
@@ -41,7 +41,7 @@ import org.apache.log.Logger;
  */
 public class ReportGeneratorConfiguration {
 
-    private static final Logger LOG = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(ReportGeneratorConfiguration.class);
 
     private static final String RANGE_DATE_FORMAT_DEFAULT = "yyyyMMddHHmmss"; //$NON-NLS-1$
 
@@ -92,10 +92,6 @@ public class ReportGeneratorConfiguratio
     private static final String REPORT_GENERATOR_KEY_END_DATE = REPORT_GENERATOR_KEY_PREFIX
             + KEY_DELIMITER + "end_date";
 
-    private static final String LOAD_EXPORTER_FMT = "Load configuration for exporter \"%s\"";
-    private static final String LOAD_GRAPH_FMT = "Load configuration for graph \"%s\"";
-    private static final String INVALID_KEY_FMT = "Invalid property \"%s\", skip it.";
-    private static final String NOT_FOUND_PROPERTY_FMT = "Property \"%s\" not found, using default value \"%s\" instead.";
 
     // Required graph properties
     // Exclude controllers
@@ -126,11 +122,6 @@ public class ReportGeneratorConfiguratio
     public static final String SUBCONF_KEY_CLASSNAME = "classname";
     public static final String SUBCONF_KEY_PROPERTY = "property";
 
-    private static final String START_LOADING_MSG = "Report generator properties loading";
-    private static final String END_LOADING_MSG = "End of report generator properties loading";
-    private static final String REQUIRED_PROPERTY_FMT = "Use \"%s\" value for required property \"%s\"";
-    private static final String OPTIONAL_PROPERTY_FMT = "Use \"%s\" value for optional property \"%s\"";
-
     private static final class ExporterConfigurationFactory implements
             SubConfigurationFactory<ExporterConfiguration> {
         private final Props props;
@@ -148,7 +139,7 @@ public class ReportGeneratorConfiguratio
         public void initialize(String exportId,
                 ExporterConfiguration exportConfiguration)
                 throws ConfigurationException {
-            LOG.debug(String.format(LOAD_EXPORTER_FMT, exportId));
+            log.debug("Load configuration for exporter '{}'", exportId);
 
             // Get the property defining the class name
             String className = getRequiredProperty(
@@ -156,9 +147,7 @@ public class ReportGeneratorConfiguratio
                     getExporterPropertyKey(exportId,
                             SUBCONF_KEY_CLASSNAME), "",
                     String.class);
-            if(LOG.isDebugEnabled()) {
-                LOG.debug("Using class:'"+className+"'"+" for exporter:'"+exportId+"'");
-            }
+            log.debug("Using class:'{}' for exporter:'{}'", className, exportId);
             exportConfiguration.setClassName(className);
 
             // Get the property defining whether only sample series
@@ -236,7 +225,7 @@ public class ReportGeneratorConfiguratio
         public void initialize(String graphId,
                 GraphConfiguration graphConfiguration)
                 throws ConfigurationException {
-            LOG.debug(String.format(LOAD_GRAPH_FMT, graphId));
+            log.debug("Load configuration for graph '{}'", graphId);
 
             // Get the property defining whether the graph have to
             // filter controller samples
@@ -261,9 +250,7 @@ public class ReportGeneratorConfiguratio
                     getGraphPropertyKey(graphId,
                             SUBCONF_KEY_CLASSNAME), "",
                     String.class);
-            if(LOG.isDebugEnabled()) {
-                LOG.debug("Using class:'"+className+"' for graph:'"+title+"' with id:'"+graphId+"'");
-            }
+            log.debug("Using class:'{}' for graph:'{}' with id:'{}'", className, title, graphId);
             graphConfiguration.setClassName(className);
 
         }
@@ -477,8 +464,7 @@ public class ReportGeneratorConfiguratio
             throws ConfigurationException {
         String value = props.getValue(key);
         if (value == null) {
-            LOG.info(String.format(NOT_FOUND_PROPERTY_FMT, key,
-                    defaultValue));
+            log.info("Property '{}' not found, using default value '{}' instead.", key, defaultValue);
             return defaultValue;
         }
         return ConfigurationUtils.convert(value, clazz);
@@ -488,7 +474,7 @@ public class ReportGeneratorConfiguratio
             String key, Class<TProperty> clazz) throws ConfigurationException {
         TProperty property = getProperty(props, key, null, clazz);
         if (property != null) {
-            LOG.debug(String.format(OPTIONAL_PROPERTY_FMT, property, key));
+            log.debug("Use '{}' value for optional property '{}'", property, key);
         }
         return property;
     }
@@ -497,7 +483,7 @@ public class ReportGeneratorConfiguratio
             String key, TProperty defaultValue, Class<TProperty> clazz)
             throws ConfigurationException {
         TProperty property = getProperty(props, key, defaultValue, clazz);
-        LOG.debug(String.format(REQUIRED_PROPERTY_FMT, property, key));
+        log.debug("Use '{}' value for required property '{}'", property, key);
         return property;
     }
 
@@ -559,7 +545,7 @@ public class ReportGeneratorConfiguratio
                     subConfigurations.put(name, subConfiguration);
                 }
             } else {
-                LOG.warn(String.format(INVALID_KEY_FMT, key));
+                log.warn("Invalid property '{}', skip it.", key);
             }
         }
 
@@ -598,15 +584,13 @@ public class ReportGeneratorConfiguratio
     public static ReportGeneratorConfiguration loadFromProperties(
             Properties properties) throws ConfigurationException {
 
-        LOG.debug(START_LOADING_MSG);
+        log.debug("Report generator properties loading");
 
         ReportGeneratorConfiguration configuration = new ReportGeneratorConfiguration();
 
         // Use jodd.Props to ease property handling
         final Props props = new Props();
-        if(LOG.isDebugEnabled()) {
-            LOG.debug("Loading properties:\r\n"+properties);
-        }
+        log.debug("Loading properties:\r\n{}", properties);
         props.load(properties);
 
         // Load temporary directory property
@@ -664,8 +648,8 @@ public class ReportGeneratorConfiguratio
                 configuration.setStartDate(reportStartDate);
             }
         } catch (ParseException e) {
-            LOG.error("Error parsing property " + REPORT_GENERATOR_KEY_START_DATE + " with value: " + startDateValue
-                    + " using format: " + rangeDateFormat, e);
+            log.error("Error parsing property {} with value: {} using format: {}", REPORT_GENERATOR_KEY_START_DATE,
+                    startDateValue, rangeDateFormat, e);
         }
         try {
             if(!StringUtils.isEmpty(endDateValue)) {
@@ -673,11 +657,11 @@ public class ReportGeneratorConfiguratio
                 configuration.setEndDate(reportEndDate);
             }
         } catch (ParseException e) {
-            LOG.error("Error parsing property " + REPORT_GENERATOR_KEY_END_DATE + " with value: " + endDateValue 
-                    + " using format: " + rangeDateFormat, e);
+            log.error("Error parsing property {} with value: {} using format: {}", REPORT_GENERATOR_KEY_END_DATE,
+                    endDateValue, rangeDateFormat, e);
         }
         
-        LOG.info("Will use date range start date: " + startDateValue + ", end date: " + endDateValue);
+        log.info("Will use date range start date: {}, end date: {}", startDateValue, endDateValue);
 
         // Find graph identifiers and load a configuration for each
         final Map<String, GraphConfiguration> graphConfigurations = configuration
@@ -687,7 +671,7 @@ public class ReportGeneratorConfiguratio
                 new GraphConfigurationFactory(props));
 
         if (graphConfigurations.isEmpty()) {
-            LOG.info("No graph configuration found.");
+            log.info("No graph configuration found.");
         }
 
         // Find exporter identifiers and load a configuration for each
@@ -698,10 +682,10 @@ public class ReportGeneratorConfiguratio
                 new ExporterConfigurationFactory(props));
 
         if (exportConfigurations.isEmpty()) {
-            LOG.warn("No export configuration found. No report will be generated.");
+            log.warn("No export configuration found. No report will be generated.");
         }
 
-        LOG.debug(END_LOADING_MSG);
+        log.debug("End of report generator properties loading");
 
         return configuration;
     }

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java Fri Feb 10 07:44:47 2017
@@ -29,8 +29,9 @@ import java.nio.charset.StandardCharsets
 
 import org.apache.commons.lang3.Validate;
 import org.apache.jmeter.save.SaveService;
-import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JOrphanUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Base class for implementing sample writer.<br>
@@ -50,7 +51,7 @@ public abstract class AbstractSampleWrit
 
     private static final String CHARSET = SaveService.getFileEncoding(StandardCharsets.UTF_8.displayName());
     
-    private static org.apache.log.Logger log = LoggingManager.getLoggerForClass();
+    private static Logger log = LoggerFactory.getLogger(AbstractSampleWriter.class);
 
     /** output writer to write samples to */
     protected PrintWriter writer;
@@ -88,7 +89,7 @@ public abstract class AbstractSampleWrit
         try {
             setWriter(new OutputStreamWriter(out, CHARSET));
         } catch (UnsupportedEncodingException e) {
-            log.warn("Unsupported CHARSET: " + CHARSET, e);
+            log.warn("Unsupported CHARSET: {}", CHARSET, e);
         }
     }
 

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java Fri Feb 10 07:44:47 2017
@@ -31,9 +31,9 @@ import org.apache.jmeter.samplers.Sample
 import org.apache.jmeter.save.CSVSaveService;
 import org.apache.jmeter.save.SaveService;
 import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Reader class for reading CSV files.
@@ -45,7 +45,7 @@ import org.apache.log.Logger;
  */
 public class CsvSampleReader implements Closeable{
 
-    private static final Logger LOG = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(CsvSampleReader.class);
     private static final int BUF_SIZE = 1024 * 1024;
 
     private static final String CHARSET = SaveService.getFileEncoding(StandardCharsets.UTF_8.displayName());
@@ -134,8 +134,12 @@ public class CsvSampleReader implements
                     && CSVSaveService.getSampleSaveConfiguration(line,
                             file.getAbsolutePath()) == null) {
                 // Build metadata from default save config
-                LOG.warn("File '"+file.getAbsolutePath()+"' does not contain the field names header, "
-                        + "ensure the jmeter.save.saveservice.* properties are the same as when the CSV file was created or the file may be read incorrectly");
+                if (log.isWarnEnabled()) {
+                    log.warn(
+                            "File '{}' does not contain the field names header, "
+                                    + "ensure the jmeter.save.saveservice.* properties are the same as when the CSV file was created or the file may be read incorrectly",
+                            file.getAbsolutePath());
+                }
                 System.err.println("File '"+file.getAbsolutePath()+"' does not contain the field names header, "
                         + "ensure the jmeter.save.saveservice.* properties are the same as when the CSV file was created or the file may be read incorrectly");
                 result = new SampleMetadata(

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java Fri Feb 10 07:44:47 2017
@@ -45,9 +45,9 @@ import org.apache.jmeter.report.processo
 import org.apache.jmeter.report.processor.ValueResultData;
 import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer;
 import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import freemarker.template.Configuration;
 import freemarker.template.TemplateExceptionHandler;
@@ -63,7 +63,7 @@ public class HtmlTemplateExporter extend
     /** Format used for non null check of parameters. */
     private static final String MUST_NOT_BE_NULL = "%s must not be null";
 
-    private static final Logger LOG = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(HtmlTemplateExporter.class);
 
     public static final String DATA_CTX_REPORT_TITLE = "reportTitle";
     public static final String DATA_CTX_TESTFILE = "testFile";
@@ -216,8 +216,8 @@ public class HtmlTemplateExporter extend
                 // whereas the current graph support controller
                 // discrimination and excludes
                 // controllers
-                LOG.warn(ReportGeneratorConfiguration.EXPORTER_KEY_SHOW_CONTROLLERS_ONLY
-                        + " is set while the graph "+graphId+" excludes controllers.");
+                log.warn("{} is set while the graph {} excludes controllers.",
+                        ReportGeneratorConfiguration.EXPORTER_KEY_SHOW_CONTROLLERS_ONLY, graphId);
                 return false;
             } else {
                 if (filterPattern != null) {
@@ -264,8 +264,8 @@ public class HtmlTemplateExporter extend
                         }
                         if (!matches) {
                             // None series matches the pattern
-                            LOG.warn("No serie matches the series_filter:"
-                                    + ReportGeneratorConfiguration.EXPORTER_KEY_SERIES_FILTER + " in graph:"+graphId);
+                            log.warn("No serie matches the series_filter: {} in graph: {}",
+                                    ReportGeneratorConfiguration.EXPORTER_KEY_SERIES_FILTER, graphId);
                             return false;
                         }
                     }
@@ -334,7 +334,7 @@ public class HtmlTemplateExporter extend
         Validate.notNull(file, MUST_NOT_BE_NULL, "file");
         Validate.notNull(configuration, MUST_NOT_BE_NULL, "configuration");
 
-        LOG.debug("Start template processing");
+        log.debug("Start template processing");
 
         // Create data context and populate it
         DataContext dataContext = new DataContext();
@@ -349,7 +349,7 @@ public class HtmlTemplateExporter extend
         if (!templateDirectory.isDirectory()) {
             String message = String.format(INVALID_TEMPLATE_DIRECTORY_FMT,
                     templateDirectory.getAbsolutePath());
-            LOG.error(message);
+            log.error(message);
             throw new ExportException(message);
         }
 
@@ -363,7 +363,9 @@ public class HtmlTemplateExporter extend
         
         JOrphanUtils.canSafelyWriteToFolder(outputDir);
 
-        LOG.info("Will generate dashboard in folder:" + outputDir.getAbsolutePath());
+        if (log.isInfoEnabled()) {
+            log.info("Will generate dashboard in folder: {}", outputDir.getAbsolutePath());
+        }
 
         // Add the flag defining whether only sample series are filtered to the
         // context
@@ -379,8 +381,7 @@ public class HtmlTemplateExporter extend
             try {
                 filterPattern = Pattern.compile(seriesFilter);
             } catch (PatternSyntaxException ex) {
-                LOG.error(String.format("Invalid series filter: \"%s\", %s",
-                        seriesFilter, ex.getDescription()));
+                log.error("Invalid series filter: '{}', {}", seriesFilter, ex.getDescription());
             }
         }
         addToContext(DATA_CTX_SERIES_FILTER, seriesFilter, dataContext);
@@ -478,9 +479,9 @@ public class HtmlTemplateExporter extend
             templateCfg.setDirectoryForTemplateLoading(templateDirectory);
             templateCfg.setTemplateExceptionHandler(
                     TemplateExceptionHandler.RETHROW_HANDLER);
-            LOG.info(
-                    "Report will be generated in:" + outputDir.getAbsolutePath()
-                            + ", creating folder structure");
+            if (log.isInfoEnabled()) {
+                log.info("Report will be generated in: {}, creating folder structure", outputDir.getAbsolutePath());
+            }
             FileUtils.forceMkdir(outputDir);
             TemplateVisitor visitor = new TemplateVisitor(
                     templateDirectory.toPath(), outputDir.toPath(), templateCfg,
@@ -490,7 +491,7 @@ public class HtmlTemplateExporter extend
             throw new ExportException("Unable to process template files.", ex);
         }
 
-        LOG.debug("End of template processing");
+        log.debug("End of template processing");
 
     }
 

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java Fri Feb 10 07:44:47 2017
@@ -57,8 +57,8 @@ import org.apache.jmeter.report.processo
 import org.apache.jmeter.reporters.ResultCollector;
 import org.apache.jmeter.samplers.SampleSaveConfiguration;
 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;
 
 /**
  * The class ReportGenerator provides a way to generate all the templated files
@@ -69,7 +69,7 @@ import org.apache.log.Logger;
 public class ReportGenerator {
     private static final String REPORTGENERATOR_PROPERTIES = "reportgenerator.properties";
 
-    private static final Logger LOG = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(ReportGenerator.class);
 
     private static final boolean CSV_OUTPUT_FORMAT = "csv"
             .equalsIgnoreCase(JMeterUtils.getPropDefault(
@@ -122,7 +122,7 @@ public class ReportGenerator {
                     "Report generation requires csv output format, check 'jmeter.save.saveservice.output_format' property");
         }
 
-        LOG.info("ReportGenerator will use for Parsing the separator:'"+CSV_DEFAULT_SEPARATOR+"'");
+        log.info("ReportGenerator will use for Parsing the separator: '{}'", CSV_DEFAULT_SEPARATOR);
 
         File file = new File(resultsFile);
         if (resultCollector == null) {
@@ -130,27 +130,23 @@ public class ReportGenerator {
                 throw new IllegalArgumentException(String.format(
                         "Cannot read test results file : %s", file));
             }
-            LOG.info("Will only generate report from results file:"
-                    + resultsFile);
+            log.info("Will only generate report from results file: {}", resultsFile);
         } else {
             if (file.exists() && file.length() > 0) {
                 throw new IllegalArgumentException("Results file:"
                         + resultsFile + " is not empty");
             }
-            LOG.info("Will generate report at end of test from  results file:"
-                    + resultsFile);
+            log.info("Will generate report at end of test from  results file: {}", resultsFile);
         }
         this.resultCollector = resultCollector;
         this.testFile = file;
         final Properties merged = new Properties();
         File rgp = new File(JMeterUtils.getJMeterBinDir(), REPORTGENERATOR_PROPERTIES);
-        if(LOG.isInfoEnabled()) {
-            LOG.info("Reading report generator properties from:"+rgp.getAbsolutePath());
+        if(log.isInfoEnabled()) {
+            log.info("Reading report generator properties from: {}", rgp.getAbsolutePath());
         }
         merged.putAll(loadProps(rgp));
-        if(LOG.isInfoEnabled()) {
-            LOG.info("Merging with JMeter properties");
-        }
+        log.info("Merging with JMeter properties");
         merged.putAll(JMeterUtils.getJMeterProperties());
         configuration = ReportGeneratorConfiguration.loadFromProperties(merged);
     }
@@ -160,8 +156,8 @@ public class ReportGenerator {
         try (FileInputStream inStream = new FileInputStream(file)) {
             props.load(inStream);
         } catch (IOException e) {
-            LOG.error("Problem loading properties from file ", e);
-            System.err.println("Problem loading properties " + e); // NOSONAR
+            log.error("Problem loading properties from file.", e);
+            System.err.println("Problem loading properties. " + e); // NOSONAR
         }
         return props;
     }
@@ -197,10 +193,10 @@ public class ReportGenerator {
     public void generate() throws GenerationException {
 
         if (resultCollector != null) {
-            LOG.info("Flushing result collector before report Generation");
+            log.info("Flushing result collector before report Generation");
             resultCollector.flushFile();
         }
-        LOG.debug("Start report generation");
+        log.debug("Start report generation");
 
         File tmpDir = configuration.getTempDirectory();
         boolean tmpDirCreated = createTempDir(tmpDir);
@@ -242,29 +238,33 @@ public class ReportGenerator {
         }
 
         // Generate data
-        LOG.debug("Start samples processing");
+        log.debug("Start samples processing");
         try {
             source.run(); // NOSONAR
         } catch (SampleException ex) {
             throw new GenerationException("Error while processing samples:"+ex.getMessage(), ex);
         }
-        LOG.debug("End of samples processing");
+        log.debug("End of samples processing");
 
-        LOG.debug("Start data exporting");
+        log.debug("Start data exporting");
 
         // Process configuration to build data exporters
-        for (Map.Entry<String, ExporterConfiguration> entry : configuration
-                .getExportConfigurations().entrySet()) {
-            LOG.info("Exporting data using exporter:'"
-                +entry.getKey()+"' of className:'"+entry.getValue().getClassName()+"'");
-            exportData(sampleContext, entry.getKey(), entry.getValue());
+        String key;
+        ExporterConfiguration value;
+        for (Map.Entry<String, ExporterConfiguration> entry : configuration.getExportConfigurations().entrySet()) {
+            key = entry.getKey();
+            value = entry.getValue();
+            if (log.isInfoEnabled()) {
+                log.info("Exporting data using exporter:'{}' of className:'{}'", key, value.getClassName());
+            }
+            exportData(sampleContext, key, value);
         }
 
-        LOG.debug("End of data exporting");
+        log.debug("End of data exporting");
 
         removeTempDir(tmpDir, tmpDirCreated);
 
-        LOG.debug("End of report generation");
+        log.debug("End of report generation");
 
     }
 
@@ -301,9 +301,7 @@ public class ReportGenerator {
             try {
                 FileUtils.deleteDirectory(tmpDir);
             } catch (IOException ex) {
-                LOG.warn(String.format(
-                        "Cannot delete created temporary directory \"%s\".",
-                        tmpDir), ex);
+                log.warn("Cannot delete created temporary directory, '{}'.", tmpDir, ex);
             }
         }
     }
@@ -315,7 +313,7 @@ public class ReportGenerator {
             if (!tmpDirCreated) {
                 String message = String.format(
                         "Cannot create temporary directory \"%s\".", tmpDir);
-                LOG.error(message);
+                log.error(message);
                 throw new GenerationException(message);
             }
         }
@@ -360,7 +358,7 @@ public class ReportGenerator {
         } catch (ClassNotFoundException | IllegalAccessException
                 | InstantiationException | ClassCastException ex) {
             String error = String.format(INVALID_CLASS_FMT, className);
-            LOG.error(error, ex);
+            log.error(error, ex);
             throw new GenerationException(error, ex);
         }
     }
@@ -381,11 +379,11 @@ public class ReportGenerator {
         } catch (ClassNotFoundException | IllegalAccessException
                 | InstantiationException | ClassCastException ex) {
             String error = String.format(INVALID_CLASS_FMT, className);
-            LOG.error(error, ex);
+            log.error(error, ex);
             throw new GenerationException(error, ex);
         } catch (ExportException ex) {
             String error = String.format(INVALID_EXPORT_FMT, exporterName);
-            LOG.error(error, ex);
+            log.error(error, ex);
             throw new GenerationException(error, ex);
         }
     }
@@ -541,14 +539,12 @@ public class ReportGenerator {
                 }
                 i++;
             }
-            LOG.warn(String
-                        .format("\"%s\" is not a valid property for class \"%s\", skip it",
-                                propertyName, className));
+            log.warn("'{}' is not a valid property for class '{}', skip it", propertyName, className);
         } catch (InvocationTargetException | ConvertException ex) {
             String message = String
                     .format("Cannot assign \"%s\" to property \"%s\" (mapped as \"%s\"), skip it",
                             propertyValue, propertyName, setterName);
-            LOG.error(message, ex);
+            log.error(message, ex);
             throw new GenerationException(message, ex);
         }
     }

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java Fri Feb 10 07:44:47 2017
@@ -26,8 +26,8 @@ import org.apache.jmeter.report.core.Sam
 import org.apache.jmeter.samplers.SampleSaveConfiguration;
 import org.apache.jmeter.save.CSVSaveService;
 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;
 
 /**
  * Consume samples using the JMeter timestamp property (defaulting to {@link SampleSaveConfiguration#MILLISECONDS}) and reproduce them as a long
@@ -37,7 +37,7 @@ import org.apache.log.Logger;
  */
 public class NormalizerSampleConsumer extends AbstractSampleConsumer {
 
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(NormalizerSampleConsumer.class);
 
     private static final String TIMESTAMP_FORMAT = 
             JMeterUtils.getPropDefault(
@@ -80,7 +80,7 @@ public class NormalizerSampleConsumer ex
         if(SampleSaveConfiguration.NONE.equalsIgnoreCase(TIMESTAMP_FORMAT)) {
             throw new SampleException("'none' format for 'jmeter.save.saveservice.timestamp_format' property is not accepted for report generation");
         }
-        log.info("Using format:"+TIMESTAMP_FORMAT+" to parse timeStamp field");
+        log.info("Using format, '{}', to parse timeStamp field", TIMESTAMP_FORMAT);
         
         isMillisFormat = SampleSaveConfiguration.MILLISECONDS.equalsIgnoreCase(TIMESTAMP_FORMAT);
         SimpleDateFormat formatter = null;

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java Fri Feb 10 07:44:47 2017
@@ -32,8 +32,8 @@ import org.apache.jmeter.report.core.Sam
 import org.apache.jmeter.report.processor.AbstractSampleConsumer;
 import org.apache.jmeter.report.processor.MapResultData;
 import org.apache.jmeter.report.processor.ValueResultData;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * The class AbstractOverTimeGraphConsumer provides a base class for over time
@@ -162,7 +162,7 @@ public abstract class AbstractVersusRequ
 
     private static class TimeCountConsumer extends AbstractSampleConsumer {
 
-        private static final Logger log = LoggingManager.getLoggerForClass();
+        private static final Logger log = LoggerFactory.getLogger(TimeCountConsumer.class);
 
         private class FileInfo {
             private final File file;
@@ -350,9 +350,7 @@ public abstract class AbstractVersusRequ
                 try {
                     FileUtils.deleteDirectory(workingDir);
                 } catch (IOException e) {
-                    log.warn(String.format(
-                            "Cannot delete created temporary directory \"%s\"",
-                            workingDir), e);
+                    log.warn("Cannot delete created temporary directory, '{}'", workingDir, e);
                 }
             }
 

Modified: jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java Fri Feb 10 07:44:47 2017
@@ -24,8 +24,8 @@ import org.apache.jmeter.samplers.Sample
 import org.apache.jmeter.samplers.SampleListener;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.testelement.OnErrorTestElement;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * ResultAction - take action based on the status of the last Result
@@ -33,9 +33,9 @@ import org.apache.log.Logger;
  */
 public class ResultAction extends OnErrorTestElement implements Serializable, SampleListener {
 
-    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(ResultAction.class);
 
     /*
      * Constructor is initially called once for each occurrence in the test plan
@@ -45,9 +45,6 @@ public class ResultAction extends OnErro
      */
     public ResultAction() {
         super();
-        // log.debug(Thread.currentThread().getName());
-        // System.out.println(">> "+me+" "+this.getName()+"
-        // "+Thread.currentThread().getName());
     }
 
     /**
@@ -58,7 +55,9 @@ public class ResultAction extends OnErro
     @Override
     public void sampleOccurred(SampleEvent e) {
         SampleResult s = e.getResult();
-        log.debug(s.getSampleLabel() + " OK? " + s.isSuccessful());
+        if (log.isDebugEnabled()) {
+            log.debug("{} OK? {}", s.getSampleLabel(), s.isSuccessful());
+        }
         if (!s.isSuccessful()) {
             if (isStopTestNow()) {
                 s.setStopTestNow(true);

Modified: jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java Fri Feb 10 07:44:47 2017
@@ -52,10 +52,10 @@ import org.apache.jmeter.testelement.pro
 import org.apache.jmeter.testelement.property.ObjectProperty;
 import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jmeter.visualizers.Visualizer;
-import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JMeterError;
 import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class handles all saving of samples.
@@ -88,9 +88,9 @@ public class ResultCollector extends Abs
             log.info("Shutdown hook ended");
         }     
     }
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(ResultCollector.class);
 
-    private static final long serialVersionUID = 233L;
+    private static final long serialVersionUID = 234L;
 
     // This string is used to identify local test runs, so must not be a valid host name
     private static final String TEST_IS_LOCAL = "*local*"; // $NON-NLS-1$
@@ -304,7 +304,7 @@ public class ResultCollector extends Abs
                 if (shutdownHook != null) {
                     Runtime.getRuntime().removeShutdownHook(shutdownHook);
                 } else {
-                    log.warn("Should not happen: shutdownHook==null, instanceCount=" + instanceCount);
+                    log.warn("Should not happen: shutdownHook==null, instanceCount={}", instanceCount);
                 }
                 finalizeFileOutput();
                 inTest = false;
@@ -330,7 +330,7 @@ public class ResultCollector extends Abs
                     this.isStats = getVisualizer().isStats();
                 }
             } catch (Exception e) {
-                log.error("", e);
+                log.error("Exception occurred while initializing file output.", e);
             }
         }
         inTest = true;
@@ -377,7 +377,7 @@ public class ResultCollector extends Abs
                 dataReader.close();
                 dataReader = null;
                 if (line == null) {
-                    log.warn(filename+" is empty");
+                    log.warn("{} is empty", filename);
                 } else {
                     if (!line.startsWith("<?xml ")){// No, must be CSV //$NON-NLS-1$
                         CSVSaveService.processSamples(filename, visualizer, this);
@@ -389,13 +389,15 @@ public class ResultCollector extends Abs
                                     new ResultCollectorHelper(this, visualizer));
                             parsedOK = true;
                         } catch (Exception e) {
-                            log.warn("Failed to load " + filename + " using XStream. Error was: " + e);
+                            if (log.isWarnEnabled()) {
+                                log.warn("Failed to load {} using XStream. Error was: {}", filename, e.toString());
+                            }
                         }
                     }
                 }
             } catch (IOException | JMeterError | RuntimeException | OutOfMemoryError e) {
                 // FIXME Why do we catch OOM ?
-                log.warn("Problem reading JTL file: " + file);
+                log.warn("Problem reading JTL file: {}", file);
             } finally {
                 JOrphanUtils.closeQuietly(dataReader);
                 JOrphanUtils.closeQuietly(bufferedInputStream);
@@ -463,15 +465,17 @@ public class ResultCollector extends Abs
             if (pdir != null) {
                 // returns false if directory already exists, so need to check again
                 if(pdir.mkdirs()){
-                    log.info("Folder "+pdir.getAbsolutePath()+" was created");
+                    if (log.isInfoEnabled()) {
+                        log.info("Folder at {} was created", pdir.getAbsolutePath());
+                    }
                 } // else if might have been created by another process so not a problem
                 if (!pdir.exists()){
-                    log.warn("Error creating directories for "+pdir.toString());
+                    log.warn("Error creating directories for {}", pdir);
                 }
             }
             writer = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(filename,
                     trimmed)), SaveService.getFileEncoding(StandardCharsets.UTF_8.name())), SAVING_AUTOFLUSH);
-            log.debug("Opened file: "+filename);
+            log.debug("Opened file: {}", filename);
             files.put(filename, new FileEntry(writer, saveConfig));
         } else {
             writer = fe.pw;
@@ -503,14 +507,16 @@ public class ResultCollector extends Abs
                 pos = raf.getFilePointer();
             }
             if (line == null) {
-                log.warn("Unexpected EOF trying to find XML end marker in " + filename);
+                log.warn("Unexpected EOF trying to find XML end marker in {}", filename);
                 return false;
             }
             raf.setLength(pos + end);// Truncate the file
         } catch (FileNotFoundException e) {
             return false;
         } catch (IOException e) {
-            log.warn("Error trying to find XML terminator " + e.toString());
+            if (log.isWarnEnabled()) {
+                log.warn("Error trying to find XML terminator. {}", e.toString());
+            }
             return false;
         }
         return true;
@@ -614,24 +620,30 @@ public class ResultCollector extends Abs
      * Flush PrintWriter, called by Shutdown Hook to ensure no data is lost
      */
     private static void flushFileOutput() {
-        for(Map.Entry<String,ResultCollector.FileEntry> me : files.entrySet()){
-            log.debug("Flushing: "+me.getKey());
-            FileEntry fe = me.getValue();
-            fe.pw.flush();
-            if (fe.pw.checkError()){
-                log.warn("Problem detected during use of "+me.getKey());
+        String key;
+        ResultCollector.FileEntry value;
+        for(Map.Entry<String, ResultCollector.FileEntry> me : files.entrySet()) {
+            key = me.getKey();
+            value = me.getValue();
+            log.debug("Flushing: {}", key);
+            value.pw.flush();
+            if (value.pw.checkError()){
+                log.warn("Problem detected during use of {}", key);
             }
         }
     }
     
     private void finalizeFileOutput() {
-        for(Map.Entry<String,ResultCollector.FileEntry> me : files.entrySet()){
-            log.debug("Closing: "+me.getKey());
-            FileEntry fe = me.getValue();
-            writeFileEnd(fe.pw, fe.config);
-            fe.pw.close();
-            if (fe.pw.checkError()){
-                log.warn("Problem detected during use of "+me.getKey());
+        String key;
+        ResultCollector.FileEntry value;
+        for(Map.Entry<String, ResultCollector.FileEntry> me : files.entrySet()) {
+            key = me.getKey();
+            value = me.getValue();
+            log.debug("Closing: {}", key);
+            writeFileEnd(value.pw, value.config);
+            value.pw.close();
+            if (value.pw.checkError()){
+                log.warn("Problem detected during use of {}", key);
             }
         }
         files.clear();

Modified: jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java Fri Feb 10 07:44:47 2017
@@ -33,9 +33,9 @@ import org.apache.jmeter.samplers.Sample
 import org.apache.jmeter.services.FileServer;
 import org.apache.jmeter.testelement.AbstractTestElement;
 import org.apache.jmeter.threads.JMeterContextService;
-import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Save Result responseData to a set of files
@@ -45,9 +45,9 @@ import org.apache.log.Logger;
  *
  */
 public class ResultSaver extends AbstractTestElement implements Serializable, SampleListener {
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(ResultSaver.class);
 
-    private static final long serialVersionUID = 240L;
+    private static final long serialVersionUID = 241L;
 
     private static final Object LOCK = new Object();
 
@@ -172,8 +172,8 @@ public class ResultSaver extends Abstrac
         }
 
         String fileName = makeFileName(s.getContentType(), getSkipAutoNumber(), getSkipSuffix());
-        if(log.isDebugEnabled()) {
-            log.debug("Saving " + s.getSampleLabel() + " in " + fileName);
+        if (log.isDebugEnabled()) {
+            log.debug("Saving {} in {}", s.getSampleLabel(), fileName);
         }
         s.setResultFileName(fileName);// Associate sample with file name
         String variable = getVariableName();
@@ -188,10 +188,10 @@ public class ResultSaver extends Abstrac
         File out = new File(fileName);
         try (FileOutputStream fos = new FileOutputStream(out)){
             JOrphanUtils.write(s.getResponseData(), fos); // chunk the output if necessary
-        } catch (FileNotFoundException e1) {
-            log.error("Error creating sample file for " + s.getSampleLabel(), e1);
-        } catch (IOException e1) {
-            log.error("Error saving sample " + s.getSampleLabel(), e1);
+        } catch (FileNotFoundException e) {
+            log.error("Error creating sample file for {}", s.getSampleLabel(), e);
+        } catch (IOException e) {
+            log.error("Error saving sample {}", s.getSampleLabel(), e);
         }
     }
 

Modified: jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java Fri Feb 10 07:44:47 2017
@@ -36,9 +36,9 @@ import org.apache.jmeter.testelement.Tes
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.threads.JMeterContextService.ThreadCounts;
 import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Generate a summary of the test run so far to the log file and/or standard
@@ -68,9 +68,9 @@ public class Summariser extends Abstract
      * Totals accumulator object for the samples to be stored in.
      */
 
-    private static final long serialVersionUID = 233L;
+    private static final long serialVersionUID = 234L;
 
-    private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggerFactory.getLogger(Summariser.class);
 
     /** interval between summaries (in seconds) default 30 seconds */
     private static final long INTERVAL = JMeterUtils.getPropDefault("summariser.interval", 30); //$NON-NLS-1$
@@ -80,7 +80,7 @@ public class Summariser extends Abstract
 
     /** Write messages to System.out ? */
     private static final boolean TOOUT = JMeterUtils.getPropDefault("summariser.out", true); //$NON-NLS-1$
-    
+
     /** Ignore TC generated SampleResult in summary */
     private static final boolean IGNORE_TC_GENERATED_SAMPLERESULT = JMeterUtils.getPropDefault("summariser.ignore_transaction_controller_sample_result", true); //$NON-NLS-1$
 
@@ -206,11 +206,11 @@ public class Summariser extends Abstract
             }
         }
         if (reportNow) {
-            writeToLog(format(myName, myDelta, "+"));
+            formatAndWriteToLog(myName, myDelta, "+");
 
             // Only if we have updated them
             if (myTotal != null && myDelta != null &&myTotal.getNumSamples() != myDelta.getNumSamples()) { // NOSONAR
-                writeToLog(format(myName, myTotal, "="));
+                formatAndWriteToLog(myName, myTotal, "=");
             }
         }
     }
@@ -229,55 +229,6 @@ public class Summariser extends Abstract
         return JOrphanUtils.rightAlign(sb, len);
     }
 
-    /**
-     * Formats summariserRunningSample
-     * @param name Summariser name
-     * @param summariserRunningSample {@link SummariserRunningSample}
-     * @param type Type of summariser (difference or total)
-     * @return the summary information
-     */
-    private static String format(String name, SummariserRunningSample summariserRunningSample, String type) {
-        DecimalFormat dfDouble = new DecimalFormat("#0.0"); // $NON-NLS-1$
-        StringBuilder tmp = new StringBuilder(20); // for intermediate use
-        StringBuilder sb = new StringBuilder(140); // output line buffer
-        sb.append(name);
-        sb.append(' ');
-        sb.append(type);
-        sb.append(' ');
-        sb.append(longToSb(tmp, summariserRunningSample.getNumSamples(), 6));
-        sb.append(" in ");
-        long elapsed = summariserRunningSample.getElapsed();
-        long elapsedSec = (elapsed + 500) / 1000; // rounded seconds
-        sb.append(JOrphanUtils.formatDuration(elapsedSec));
-        sb.append(" = ");
-        if (elapsed > 0) {
-            sb.append(doubleToSb(dfDouble, tmp, summariserRunningSample.getRate(), 6, 1));
-        } else {
-            sb.append("******");// Rate is effectively infinite
-        }
-        sb.append("/s Avg: ");
-        sb.append(longToSb(tmp, summariserRunningSample.getAverage(), 5));
-        sb.append(" Min: ");
-        sb.append(longToSb(tmp, summariserRunningSample.getMin(), 5));
-        sb.append(" Max: ");
-        sb.append(longToSb(tmp, summariserRunningSample.getMax(), 5));
-        sb.append(" Err: ");
-        sb.append(longToSb(tmp, summariserRunningSample.getErrorCount(), 5));
-        sb.append(" (");
-        sb.append(summariserRunningSample.getErrorPercentageString());
-        sb.append(')');
-        if ("+".equals(type)) {
-            ThreadCounts tc = JMeterContextService.getThreadCounts();
-            sb.append(" Active: ");
-            sb.append(tc.activeThreads);
-            sb.append(" Started: ");
-            sb.append(tc.startedThreads);
-            sb.append(" Finished: ");
-            sb.append(tc.finishedThreads);
-        }
-        return sb.toString();
-    }
-
     /** {@inheritDoc} */
     @Override
     public void sampleStarted(SampleEvent e) {
@@ -362,20 +313,72 @@ public class Summariser extends Abstract
             // Only print final delta if there were some samples in the delta
             // and there has been at least one sample reported previously
             if (total.delta.getNumSamples() > 0 && total.total.getNumSamples() >  0) {
-                writeToLog(format(name, total.delta, "+"));
+                formatAndWriteToLog(name, total.delta, "+");
             }
             total.moveDelta(); // This will update the total endTime
-            writeToLog(format(name, total.total, "="));
+            formatAndWriteToLog(name, total.total, "=");
         }
     }
 
-    private void writeToLog(String str) {
-        if (TOLOG) {
-            log.info(str);
+    private void formatAndWriteToLog(String name, SummariserRunningSample summariserRunningSample, String type) {
+        if (TOOUT || (TOLOG && log.isInfoEnabled())) {
+            String formattedMessage = format(name, summariserRunningSample, type);
+            if (TOLOG) {
+                log.info(formattedMessage);
+            }
+            if (TOOUT) {
+                System.out.println(formattedMessage);
+            }
+        }
+    }
+
+    /**
+     * Formats summariserRunningSample
+     * @param name Summariser name
+     * @param summariserRunningSample {@link SummariserRunningSample}
+     * @param type Type of summariser (difference or total)
+     * @return the summary information
+     */
+    private static String format(String name, SummariserRunningSample summariserRunningSample, String type) {
+        DecimalFormat dfDouble = new DecimalFormat("#0.0"); // $NON-NLS-1$
+        StringBuilder tmp = new StringBuilder(20); // for intermediate use
+        StringBuilder sb = new StringBuilder(140); // output line buffer
+        sb.append(name);
+        sb.append(' ');
+        sb.append(type);
+        sb.append(' ');
+        sb.append(longToSb(tmp, summariserRunningSample.getNumSamples(), 6));
+        sb.append(" in ");
+        long elapsed = summariserRunningSample.getElapsed();
+        long elapsedSec = (elapsed + 500) / 1000; // rounded seconds
+        sb.append(JOrphanUtils.formatDuration(elapsedSec));
+        sb.append(" = ");
+        if (elapsed > 0) {
+            sb.append(doubleToSb(dfDouble, tmp, summariserRunningSample.getRate(), 6, 1));
+        } else {
+            sb.append("******");// Rate is effectively infinite
         }
-        if (TOOUT) {
-            System.out.println(str);
+        sb.append("/s Avg: ");
+        sb.append(longToSb(tmp, summariserRunningSample.getAverage(), 5));
+        sb.append(" Min: ");
+        sb.append(longToSb(tmp, summariserRunningSample.getMin(), 5));
+        sb.append(" Max: ");
+        sb.append(longToSb(tmp, summariserRunningSample.getMax(), 5));
+        sb.append(" Err: ");
+        sb.append(longToSb(tmp, summariserRunningSample.getErrorCount(), 5));
+        sb.append(" (");
+        sb.append(summariserRunningSample.getErrorPercentageString());
+        sb.append(')');
+        if ("+".equals(type)) {
+            ThreadCounts tc = JMeterContextService.getThreadCounts();
+            sb.append(" Active: ");
+            sb.append(tc.activeThreads);
+            sb.append(" Started: ");
+            sb.append(tc.startedThreads);
+            sb.append(" Finished: ");
+            sb.append(tc.finishedThreads);
         }
+        return sb.toString();
     }
 
 }