Author: fhanik
Date: Thu Aug  7 19:20:00 2014
New Revision: 1616570

URL: http://svn.apache.org/r1616570
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53200
Enable selective logging of slow/failed queries

Modified:
    tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml
    
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java

Modified: tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml?rev=1616570&r1=1616569&r2=1616570&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml (original)
+++ tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml Thu Aug  7 19:20:00 2014
@@ -658,6 +658,16 @@
            The default value is <code>1000</code>.
         </p>
       </attribute>
+      <attribute name="logSlow" required="false">
+        <p>(boolean as String) Set to true if you wish to log slow queries
+            The default value is <code>true</code>.
+        </p>
+      </attribute>
+      <attribute name="logFailed" required="false">
+        <p>(boolean as String) Set to true if you wish to log slow queries
+            The default value is <code>true</code>.
+        </p>
+      </attribute>
     </attributes>
   </subsection>
   <subsection 
name="org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx">

Modified: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java?rev=1616570&r1=1616569&r2=1616570&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java
 Thu Aug  7 19:20:00 2014
@@ -58,6 +58,16 @@ public class SlowQueryReport extends Abs
     protected int  maxQueries= 1000; //don't store more than this amount of 
queries
 
     /**
+     * Flag to enable disable logging of slow queries
+     */
+    protected boolean logSlow = true;
+
+    /**
+     * Flag to enable disable logging of failed queries
+     */
+    protected boolean logFailed = true;
+
+    /**
      * Returns the query stats for a given pool
      * @param poolname - the name of the pool we want to retrieve stats for
      * @return a hash map containing statistics for 0 to maxQueries
@@ -86,7 +96,7 @@ public class SlowQueryReport extends Abs
             long delta = now - start;
             QueryStats qs = this.getQueryStats(sql);
             qs.failure(delta, now);
-            if (log.isWarnEnabled()) {
+            if (isLogFailed() && log.isWarnEnabled()) {
                 log.warn("Failed Query Report SQL="+sql+"; time="+delta+" 
ms;");
             }
         }
@@ -99,7 +109,7 @@ public class SlowQueryReport extends Abs
         if (this.maxQueries > 0 ) {
             QueryStats qs = this.getQueryStats(sql);
             qs.add(delta, start);
-            if (log.isWarnEnabled()) {
+            if (isLogSlow() && log.isWarnEnabled()) {
                 log.warn("Slow Query Report SQL="+sql+"; time="+delta+" ms;");
             }
         }
@@ -199,19 +209,45 @@ public class SlowQueryReport extends Abs
     }
 
 
+    public boolean isLogSlow() {
+        return logSlow;
+    }
+
+    public void setLogSlow(boolean logSlow) {
+        this.logSlow = logSlow;
+    }
+
+    public boolean isLogFailed() {
+        return logFailed;
+    }
+
+    public void setLogFailed(boolean logFailed) {
+        this.logFailed = logFailed;
+    }
+
     @Override
     public void setProperties(Map<String, InterceptorProperty> properties) {
         super.setProperties(properties);
         final String threshold = "threshold";
         final String maxqueries= "maxQueries";
+        final String logslow = "logSlow";
+        final String logfailed = "logFailed";
         InterceptorProperty p1 = properties.get(threshold);
         InterceptorProperty p2 = properties.get(maxqueries);
+        InterceptorProperty p3 = properties.get(logSlow);
+        InterceptorProperty p4 = properties.get(logfailed);
         if (p1!=null) {
             setThreshold(Long.parseLong(p1.getValue()));
         }
         if (p2!=null) {
             setMaxQueries(Integer.parseInt(p2.getValue()));
         }
+        if (p3!=null) {
+            setLogSlow(Boolean.getBoolean(p3.getValue()));
+        }
+        if (p4!=null) {
+            setLogFailed(Boolean.getBoolean(p4.getValue()));
+        }
     }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to