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 <[EMAIL PROTECTED]>
  
  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(
  
  
  

Reply via email to