diff --git a/core/src/main/java/com/yahoo/ycsb/DBWrapper.java b/core/src/main/java/com/yahoo/ycsb/DBWrapper.java
index e904717a4d782030cea0df7f0dec3ba25a069a12..bba76b1f9fe612b7b4e9cb89abb3c1f1f40d350b 100644
--- a/core/src/main/java/com/yahoo/ycsb/DBWrapper.java
+++ b/core/src/main/java/com/yahoo/ycsb/DBWrapper.java
@@ -35,14 +35,6 @@ public class DBWrapper extends DB
   DB _db;
   Measurements _measurements;
 
-  // By default we don't track latency numbers for specific error status code.
-  // We just report latency of all failed operation under one measurement name
-  // such as [READ-FAILED]. But optionally, user can configure to have either:
-  // 1) Record and report latency for each and every error status code by
-  //    setting reportLatencyForEachError to true, or
-  // 2) Record and report latency for a select set of error status codes by
-  //    providing a CSV list of Status codes via the "latencytrackederrors"
-  //    property.
   boolean reportLatencyForEachError = false;
   HashSet<String> latencyTrackedErrors = new HashSet<String>();
 
@@ -79,14 +71,16 @@ public class DBWrapper extends DB
     this.reportLatencyForEachError = Boolean.parseBoolean(getProperties().
         getProperty("reportlatencyforeacherror", "false"));
 
-    String latencyTrackedErrors = getProperties().getProperty(
-        "latencytrackederrors", null);
-    if (latencyTrackedErrors != null) {
-      this.latencyTrackedErrors = new HashSet<String>(Arrays.asList(
-          latencyTrackedErrors.split(",")));
+    if (!reportLatencyForEachError) {
+      String latencyTrackedErrors = getProperties().getProperty(
+          "latencytrackederrors", null);
+      if (latencyTrackedErrors != null) {
+        this.latencyTrackedErrors = new HashSet<String>(Arrays.asList(
+            latencyTrackedErrors.split(",")));
+      }
     }
 
-    System.out.println("DBWrapper: report latency for each error is " +
+    System.err.println("DBWrapper: report latency for each error is " +
         this.reportLatencyForEachError + " and specific error codes to track" +
         " for latency are: " + this.latencyTrackedErrors.toString());
   }
diff --git a/workloads/workload_template b/workloads/workload_template
index 6aebd64a178d525032214076a2e7c2d15b104485..de0bbae24aa7f4d77083201e182e6919e9095042 100644
--- a/workloads/workload_template
+++ b/workloads/workload_template
@@ -138,3 +138,21 @@ histogram.buckets=1000
 
 # Granularity for time series (in milliseconds)
 timeseries.granularity=1000
+
+# Latency reporting.
+#
+# YCSB records latency of failed operations separately from successful ones.
+# Latency of all OK operations will be reported under their operation name,
+# such as [READ], [UPDATE], etc.
+#
+# For failed operations:
+# By default we don't track latency numbers of specific error status.
+# We just report latency of all failed operation under one measurement name
+# such as [READ-FAILED]. But optionally, user can configure to have either:
+# 1. Record and report latency for each and every error status code by
+#    setting reportLatencyForEachError to true, or
+# 2. Record and report latency for a select set of error status codes by
+#    providing a CSV list of Status codes via the "latencytrackederrors"
+#    property.
+# reportlatencyforeacherror=false
+# latencytrackederrors="<comma separated strings of error codes>"