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