You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2005/03/03 19:26:40 UTC

cvs commit: jakarta-tomcat-catalina/webapps/docs logging.xml tomcat-docs.xsl

remm        2005/03/03 10:26:40

  Modified:    webapps/docs logging.xml tomcat-docs.xsl
  Log:
  - Documentation on JULI.
  
  Revision  Changes    Path
  1.6       +120 -8    jakarta-tomcat-catalina/webapps/docs/logging.xml
  
  Index: logging.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/logging.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- logging.xml	7 Dec 2004 16:38:15 -0000	1.5
  +++ logging.xml	3 Mar 2005 18:26:40 -0000	1.6
  @@ -128,14 +128,37 @@
     </section>
   
     <section name="java.util.logging">
  +
     <p>
       In order to configure JDK logging you should have JDK 1.4+. Tomcat 5.5 is intended for
       JDK 5.0, but can be run on JDK 1.4 using a compatibility package.
     </p>
     <p>
  -    In order to configure JDK Logging, you should find the JDK's logging.properties file. Check
  -    your JAVA_HOME environment setting to see which JDK Tomcat is using (or maybe JRE 5.0 as Tomcat
  -    can now run on a JRE from version 5.5). The file will be in <code>$JAVA_HOME/jre/lib</code>.
  +    The default implemenatation of java.util.logging provided in the JDK is too limited to be 
  +    useful. A limitation of JDK Logging appears to be the inability to have per-web application logging, 
  +    as the configuration is per-VM. As a result, Tomcat will, in the default configuration,
  +    replace the default LogManager implementation with a container friendly implementation
  +    called JULI, which addresses these shortcomings. It supports the same configuration mechanisms 
  +    as the standard JDK java.util.logging, using either a programmatic approach, or properties
  +    files. The main difference is that per-classloader properties files can be set (which enables easy
  +    redeployment friendly webapp configuration), and the properties files support slightly extended
  +    constructs which allows more freedom for defining handlers and assigning them to loggers.
  +  </p>
  +  <p>
  +    JULI is enabled by default in Tomcat 5.5, and supports per classloader configuration, in addition to 
  +    the regular global java.util.logging configuration. This means that logging can be configured at 
  +    the following layers:
  +    <ul>
  +      <li>In the JDK's logging.properties file. Check
  +      your JAVA_HOME environment setting to see which JDK Tomcat is using (or maybe JRE 5.0 as Tomcat
  +      can now run on a JRE from version 5.5). The file will be in <code>$JAVA_HOME/jre/lib</code>.
  +      Alternately, it can also use a global configuration file located elsewhere by using the 
  +      system property <code>java.util.logging.config.file</code>, or programmatic configuration using
  +      <code>java.util.logging.config.class</code>.</li>
  +      <li>In each classloader using a logging.properties file. This means that it is possible to have a
  +      configuration for the Tomcat core, as well as separate configurations for each webapps which will 
  +      have the same lifecycle as the webapps.</li>
  +    </ul>
     </p>
     <p>
       The default logging.properties specifies a ConsoleHandler for routing logging to stdout and
  @@ -143,17 +166,106 @@
       WARN, FINE, FINEST or ALL. The logging.properties shipped with JDK is set to INFO. You
       can also target specific packages to collect logging from and specify a level. Here is how
       you would set debugging from Tomcat. You would need to ensure the ConsoleHandler's level is also
  -    set to collect this threshold, so FINEST or ALL should be set.
  +    set to collect this threshold, so FINEST or ALL should be set. Please refer to Sun's java.util.logging
  +    documentation for the complete details.
     </p>
     <p>
       <source>org.apache.catalina.level=FINEST</source>
     </p>
  -
     <p>
  -    A limitation of JDK Logging appears to be the inability to have per-web application logging, 
  -    as the configuration is per-VM. It is advisable to use log4j for per-web application logging
  -    as explained below.
  +    The configuration used by JULI is extremely similar, but uses a few extensions to allow better 
  +    flexibility in assigning loggers. The main differences are:
  +    <ul>
  +      <li>A prefix may be added to handler names, so that multiple handlers of a single class may be 
  +      instantiated. A prefix is a String which starts with a digit, and ends with '.'. For example, 
  +      <code>22foobar.</code> is a valid prefix.</li>
  +      <li>As in Java 5.0, loggers can define a list of handlers using the <code>loggerName.handlers</code>
  +      property.</li>
  +      <li>By default, loggers will not delegate to their parent if they have associated handlers. This
  +      may be changed per logger using the <code>loggerName.useParentHandlers</code> property, which accepts 
  +      a boolean value.</li>
  +      <li>The root logger can define its set of handlers using a <code>.handlers</code> property.</li>
  +      <li>System property replacement for property values which start with ${sytstemPropertyName}.</li>
  +    </ul>
     </p>
  +  <p>
  +    Example logging.properties file to be placed in common/classes:
  +    <source>
  +handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, \
  +           3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, \
  +           java.util.logging.ConsoleHandler
  +
  +.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
  +
  +############################################################
  +# Handler specific properties.
  +# Describes specific configuration info for Handlers.
  +############################################################
  +
  +1catalina.org.apache.juli.FileHandler.level = FINE
  +1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
  +1catalina.org.apache.juli.FileHandler.prefix = catalina.
  +
  +2localhost.org.apache.juli.FileHandler.level = FINE
  +2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
  +2localhost.org.apache.juli.FileHandler.prefix = localhost.
  +
  +3manager.org.apache.juli.FileHandler.level = FINE
  +3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
  +3manager.org.apache.juli.FileHandler.prefix = manager.
  +
  +4admin.org.apache.juli.FileHandler.level = FINE
  +4admin.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
  +4admin.org.apache.juli.FileHandler.prefix = admin.
  +
  +java.util.logging.ConsoleHandler.level = FINE
  +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
  +
  +
  +############################################################
  +# Facility specific properties.
  +# Provides extra control for each logger.
  +############################################################
  +
  +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
  +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \
  +   2localhost.org.apache.juli.FileHandler
  +
  +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
  +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = \
  +   3manager.org.apache.juli.FileHandler
  +
  +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].level = INFO
  +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].handlers = \
  +   4admin.org.apache.juli.FileHandler
  +
  +# For example, set the com.xyz.foo logger to only log SEVERE
  +# messages:
  +#org.apache.catalina.startup.ContextConfig.level = FINE
  +#org.apache.catalina.startup.HostConfig.level = FINE
  +#org.apache.catalina.session.ManagerBase.level = FINE
  +    </source>
  +    </p>
  +    
  +    <p>
  +      Example logging.properties for the servlet-examples web application to be placed
  +      in WEB-INF/classes inside the web application:
  +      <source>
  +handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
  +
  +############################################################
  +# Handler specific properties.
  +# Describes specific configuration info for Handlers.
  +############################################################
  +
  +org.apache.juli.FileHandler.level = FINE
  +org.apache.juli.FileHandler.directory = ${catalina.base}/logs
  +org.apache.juli.FileHandler.prefix = servlet-examples.
  +
  +java.util.logging.ConsoleHandler.level = FINE
  +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
  +      </source>
  +    </p>
   
     </section>
   
  
  
  
  1.11      +2 -2      jakarta-tomcat-catalina/webapps/docs/tomcat-docs.xsl
  
  Index: tomcat-docs.xsl
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/tomcat-docs.xsl,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- tomcat-docs.xsl	3 Jan 2005 22:37:38 -0000	1.10
  +++ tomcat-docs.xsl	3 Mar 2005 18:26:40 -0000	1.11
  @@ -159,7 +159,7 @@
         <xsl:comment>PAGE FOOTER</xsl:comment>
         <tr><td colspan="2">
           <div align="center"><font color="{$body-link}" size="-1"><em>
  -        Copyright &#169; 1999-2004, Apache Software Foundation
  +        Copyright &#169; 1999-2005, Apache Software Foundation
           </em></font></div>
         </td></tr>
   
  
  
  

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