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: [email protected]
For additional commands, e-mail: [email protected]