You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@apache.org on 2001/08/07 22:53:06 UTC
cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/servlet JspServlet.java
craigmcc 01/08/07 13:53:06
Modified: jasper/src/share/org/apache/jasper/logging
DefaultLogger.java
jasper/src/share/org/apache/jasper/servlet JspServlet.java
Log:
The current implementation of logging in Jasper (using JasperLogger)
causes a background thread to be created per <jsp-file> declaration,
instead of once per web app, due to the changes needed to deal with
sealing violation problems. Change this to use DefaultLogger instead,
which uses the request processing thread. Messages continue to be logged
to the servlet context log, so there will be no visible behavior
difference (other than elimination of useless daemon threads).
PR: BugTraq #4488877
Submitted By: Tony Ng <to...@sun.com>
Revision Changes Path
1.2 +38 -0 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/logging/DefaultLogger.java
Index: DefaultLogger.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/logging/DefaultLogger.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultLogger.java 2000/08/12 00:52:11 1.1
+++ DefaultLogger.java 2001/08/07 20:53:06 1.2
@@ -58,6 +58,7 @@
import java.io.Writer;
import java.io.IOException;
+import javax.servlet.ServletContext;
/**
* Trivial logger that sends all messages to the default sink. To
@@ -74,12 +75,45 @@
newline = separator.toCharArray();
}
+
+ /**
+ * Default constructor leaves the debug output going to the
+ * default sink.
+ */
+ public DefaultLogger() {
+ super();
+ }
+
+
+ /**
+ * The servlet context we are associated with.
+ */
+ protected ServletContext servletContext;
+
+
+ /**
+ * Construct a logger that writes output to the servlet context log
+ * for the current web application.
+ *
+ * @param servletContext The servlet context for our web application
+ */
+ public DefaultLogger(ServletContext servletContext) {
+ super();
+ this.servletContext = servletContext;
+ }
+
+
+
/**
* Prints log message to default sink
*
* @param message the message to log.
*/
protected void realLog(String message) {
+ if (servletContext != null) {
+ servletContext.log(message);
+ return;
+ }
try {
defaultSink.write(message);
defaultSink.write(newline);
@@ -97,6 +131,10 @@
* @param t the exception that was thrown.
*/
protected void realLog(String message, Throwable t) {
+ if (servletContext != null) {
+ servletContext.log(message, t);
+ return;
+ }
try {
defaultSink.write(message);
defaultSink.write(newline);
1.20 +3 -1 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/servlet/JspServlet.java
Index: JspServlet.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/servlet/JspServlet.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- JspServlet.java 2001/07/17 04:21:14 1.19
+++ JspServlet.java 2001/08/07 20:53:06 1.20
@@ -96,6 +96,7 @@
import org.apache.jasper.compiler.TldLocationsCache;
import org.apache.jasper.logging.Logger;
+import org.apache.jasper.logging.DefaultLogger;
import org.apache.jasper.logging.JasperLogger;
/**
@@ -253,7 +254,8 @@
this.serverInfo = context.getServerInfo();
// Setup logging
- Constants.jasperLog = new JasperLogger(this.context);
+ // Constants.jasperLog = new JasperLogger(this.context);
+ Constants.jasperLog = new DefaultLogger(this.context);
Constants.jasperLog.setName("JASPER_LOG");
Constants.jasperLog.setTimestamp("false");
Constants.jasperLog.setVerbosityLevel(