logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From c...@apache.org
Subject cvs commit: logging-log4j/src/java/org/apache/log4j/jmx T.java
Date Wed, 03 Nov 2004 18:39:09 GMT
ceki        2004/11/03 10:39:09

  Modified:    .        Tag: v1_2-branch build.xml
               docs     Tag: v1_2-branch FAQ.html HISTORY manual.html
  Removed:     src/java/org/apache/log4j/jmx Tag: v1_2-branch T.java
  Log:
  
  NOTE: 1.2 BRANCH
  
  - 1.2 site build now depends on logging-site as does log4j on CVS HEAD.
  
  - Small doc corrections.
  
  
  PR:
  Obtained from:
  Submitted by:	
  Reviewed by:	
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.34.2.13 +33 -38    logging-log4j/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/logging-log4j/build.xml,v
  retrieving revision 1.34.2.12
  retrieving revision 1.34.2.13
  diff -u -r1.34.2.12 -r1.34.2.13
  --- build.xml	29 Oct 2004 18:37:22 -0000	1.34.2.12
  +++ build.xml	3 Nov 2004 18:39:08 -0000	1.34.2.13
  @@ -81,14 +81,13 @@
       <pathelement location="${jmx-extra.jar}"/>
     </path>
   
  -  <!-- Construct compile classpath -->
  -  <path id="site2.classpath">
  -    <fileset dir="${jakarta-site2}/lib">
  +  <!-- Construct classpath for building the html pages-->
  +  <path id="site.classpath">
  +    <fileset dir="${logging-site}/lib">
         <include name="*.jar"/>
       </fileset>
     </path>
   
  -
     <!-- ================================================================= -->
     <!-- Default target                                                    -->
     <!-- ================================================================= -->
  @@ -395,51 +394,47 @@
     <!-- ============================================== -->
     <!-- Build the site files using Anakia              -->
     <!-- ============================================== -->  
  -  <target name="prepareSite2">    
  +  <!-- ============================================== -->
  +  <!-- Build the site files using Anakia              -->
  +  <!-- ============================================== -->
  +  <target name="prepareSite">
       <available classname="org.apache.velocity.anakia.AnakiaTask"
         property="AnakiaTask.present">
  -      <classpath refid="site2.classpath"/>
  +      <classpath refid="site.classpath"/>
       </available>
     </target>
  -  
  -  <target name="checkSite2" depends="prepareSite2" unless="AnakiaTask.present">
  +
  +  <target name="checkSite" depends="prepareSite" unless="AnakiaTask.present">
       <echo>
  -      AnakiaTask is not present! Please check to make sure that 
  +      AnakiaTask is not present! Please check to make sure that
         velocity.jar is in your classpath.
       </echo>
     </target>
  -  
  -  <target name="site2" depends="checkSite2" if="AnakiaTask.present">
  +
  +  <target name="site" depends="checkSite" if="AnakiaTask.present">
       <taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask">
  -      <classpath refid="site2.classpath"/>
  +      <classpath refid="site.classpath"/>
       </taskdef>
  -
  + 
  +    <mkdir dir="${docs.dest}/css"/>  
  +    <copy file="${logging-site}/docs/css/site.css" tofile="${docs.dest}/css/site.css"/>
  +    
       <anakia basedir="${xdocs.src}" destdir="${docs.dest}/"
  -      extension=".html" 
  +      extension=".html"
         style="site.vsl"
         projectFile="stylesheets/project.xml"
         excludes="**/stylesheets/**, empty.xml, lf5/**"
         includes="**/*.xml"
         lastModifiedCheck="true"
  -      templatePath="../jakarta-site2/xdocs/stylesheets">
  +      templatePath="${logging-site}/src/xdocs/stylesheets">
       </anakia>
  -    
  -    <anakia basedir="${xdocs.src}" destdir="${docs.dest}/"
  -      extension=".html" 
  -      style="site.vsl"
  -      projectFile="stylesheets/lf5.xml"
  -      excludes="**/stylesheets/**, empty.xml"
  -      includes="lf5/*.xml"
  -      lastModifiedCheck="true"
  -      templatePath="../jakarta-site2/xdocs/stylesheets">
  -    </anakia>
  -  </target>
   
  +  </target>
   
    <!-- ================================================================= -->
    <!-- Build a complete distribution. Results go to ${dist.images}       -->
    <!-- ================================================================= -->
  -  <target name="dist" depends="init, clean, javadoc, jar, site2">
  +  <target name="dist" depends="init, clean, javadoc, jar, site">
   
       <delete verbose="true">
         <fileset dir=".">
  @@ -477,9 +472,9 @@
   
       <mkdir  dir="${dist.images}" />
       
  -    <mkdir  dir="${dist.tmp}/jakarta-log4j-${version}" />
  +    <mkdir  dir="${dist.tmp}/logging-log4j-${version}" />
   
  -    <copy todir="${dist.tmp}/jakarta-log4j-${version}">
  +    <copy todir="${dist.tmp}/logging-log4j-${version}">
          <fileset dir="${base}"
                   includes="src/java/**,
   			  docs/**,
  @@ -503,23 +498,23 @@
       </copy>
   
   
  -    <fixcrlf srcdir="${dist.tmp}/jakarta-log4j-${version}"
  +    <fixcrlf srcdir="${dist.tmp}/logging-log4j-${version}"
                includes="build.sh" cr="remove"/>
  -    <fixcrlf srcdir="${dist.tmp}/jakarta-log4j-${version}"
  +    <fixcrlf srcdir="${dist.tmp}/logging-log4j-${version}"
                includes="build.bat" cr="add"/>
  -    <chmod   dir="${dist.tmp}/jakarta-log4j-${version}"
  +    <chmod   dir="${dist.tmp}/logging-log4j-${version}"
                includes="build.sh" perm="+x"/>
   
  -    <tar tarfile="${dist.images}/jakarta-log4j-${version}.tar"
  +    <tar tarfile="${dist.images}/logging-log4j-${version}.tar"
            basedir="${dist.tmp}"
  -         includes="jakarta-log4j-${version}/**" />
  +         includes="logging-log4j-${version}/**" />
   
  -    <gzip src="${dist.images}/jakarta-log4j-${version}.tar"
  -          zipfile="${dist.images}/jakarta-log4j-${version}.tar.gz" />
  +    <gzip src="${dist.images}/logging-log4j-${version}.tar"
  +          zipfile="${dist.images}/logging-log4j-${version}.tar.gz" />
   
  -    <zip zipfile="${dist.images}/jakarta-log4j-${version}.zip"
  +    <zip zipfile="${dist.images}/logging-log4j-${version}.zip"
            basedir="${dist.tmp}"
  -         includes="jakarta-log4j-${version}/**" />
  +         includes="logging-log4j-${version}/**" />
   
   
       <delete dir="${dist.tmp}" />
  
  
  
  No                   revision
  No                   revision
  1.15.2.2  +1024 -551 logging-log4j/docs/Attic/FAQ.html
  
  Index: FAQ.html
  ===================================================================
  RCS file: /home/cvs/logging-log4j/docs/Attic/FAQ.html,v
  retrieving revision 1.15.2.1
  retrieving revision 1.15.2.2
  diff -u -r1.15.2.1 -r1.15.2.2
  --- FAQ.html	22 May 2002 17:23:36 -0000	1.15.2.1
  +++ FAQ.html	3 Nov 2004 18:39:08 -0000	1.15.2.2
  @@ -1,212 +1,398 @@
  -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  -<html> <head>
  -<title>log4j FAQ</title>
  -</head> 
  -<body bgcolor=#FFFFFF>
  - 
  -<center>
  -<h1>Frequently Asked Questions about log4j</h1>
  -
  -<b>Ceki G&uuml;lc&uuml;</b> and <b>Chris Taylor</b> 
  -<h2>May 2002</h2>
  -</center>
  -<ul>
  -
  -<li><p><a href=#whatIs>What is log4j?</a></p>
  -
  -<li><p><a href=#reliable>Is log4j a reliable logging system?</a></p>
  -<li><p><a href=#prerequisites>What are the prerequisites for log4j?</a></p>
  -<li><p><a href=#javadoc>Is there javadoc documentation for log4j?</a></p>
  -<li><p><a href=#alternatives>What other logging packages are there?</a></p>
  -<li><p><a HREF=#usageExample>Is there example code for using log4j?</a></p>
  -<li><p><a href=#features>What are the features of log4j?</a></p> 
  -<li><p><a href=#thread-safety>Is log4j thread-safe?</a></p> 
  -<li><p><a href=#sample>What does log output look like?</a></p>
  -<li><p><a href=#logger>What are <em>Loggers</em>?</a></p>
  -<li><p><a href=#behavior>How can I change log behavior at runtime?</a></p>
  -<li><p><a HREF=#fastLogging>What is the fastest way of (not) logging?</a></p>
  -<li><p><a HREF=#arrayDebug>What is the use of the <code>debug</code> method
  -expecting a <code>String</code> array as one of its parameters?</a></p>
  -
  -<li><p><a href=#introCat>Why was the Logger class introduced and how
  -do I migrate from the previous String based implementation?</a></p>
  -
  -<li><p><a href=#namingLoggers>Are there any suggested ways for naming
  -loggers?</a></p>
  -
  -<li><p><a href=#className>How do I get the fully-qualified name of a class in
  -a static block?</a></p>
  -
  -<li><p><a href=#customLayouts>Can the log output format be
  -customized?</a></p>
  -
  -<li><p><a href="#options">What are the configurable options for
  -<code>ForBarAppender</code>?</a></p>
  -
  -
  -<li><p><a href=#NDC>Can the outputs of multiple client request go to
  -different log files?</a></p>
  -
  -<li><p><a href=#rm>Logger instances seem to be create only. Why isn't
  -there a method to remove logger instances?</a></p>
  -
  -<li><p><a href=#filterByLevel>Is it possible to direct log output
  -to different appenders by level?</a></p>
  -
  -<li><p><a href=#many21>How do I get multiple processes to log to the 
  -same file?</a></p>
  -
  -<li><p><a href=#timestamp>If I have many process across multiple hosts
  -(possibly across multiple timezones) logging to the same file using the
  -method above, what happens to timestamps?</P>
  -
  -<LI><P><A HREF="#j2ee">Why can't log4j find my properties file in a J2EE or WAR application?</P>
  -<LI><P><A HREF="#configureandwatch">Is there a way to get log4j to automatically reload a configuration file if it changes?</P>
  -<LI><P><A HREF="#nteventlogproblems">What does the Windows NT Event Viewer complain about missing descriptions for my event messages
  -when I use the NTEventLogAppender?</P>
  -<LI><P><A HREF="#morenteventlogproblems">Why can't I map my logger names to the loggers that appear in the 
  -NT Event Log when I use the NTEventLogAppender?</p>						   
  -<li><p><a href=#tax>Why should I donate my log4j extensions back to the
  -project?</a></p>
  -<li><p><a href=#help>What should I keep in mind when contributing code?</a></p>
  -
  -
  -<li><p><a href=#download>Where can I find the latest distribution of log4j?</a></p>
  -
  -</ul>
  -
  -<hr>
  -<p><a name=whatIs><h4 id="whatIs">What is log4j?</h4>
  -
  -log4j is a tool to help the programmer output log statements to a
  -variety of output targets.
  -
  -<p>In case of problems with an application, it is helpful to enable
  -logging so that the problem can be located. With log4j it is possible
  -to enable logging at runtime without modifying the application binary.
  -The log4j package is designed so that log statements can remain in
  -<i>shipped</i> code without incurring a high performance cost. It
  -follows that the speed of logging (or rather not logging) is capital.
  -
  -<p>At the same time, log output can be so voluminous that it quickly
  -becomes overwhelming. One of the distinctive features of log4j is the
  -notion of <i>hierarchical loggers</i>. Using loggers it is
  -possible to selectively control which log statements are output at
  -arbitrary  granularity.
  -
  -<p>log4j is designed with two distinct goals in mind: speed and
  -flexibility. There is a tight balance between these two
  -requirements. I believe that log4j strikes the right balance.
  -
  -<a name=reliable><h4>Is log4j a reliable logging system?</h4>
  -
  -No. log4j is not reliable. It is a best-effort and <em>fail-stop</em>
  -logging system.
  -
  -<p>By fail-stop, we mean that log4j will not throw unexpected
  -exceptions at run-time potentially causing your application to
  -crash. <b>If for any reason, log4j throws an uncaught exception,
  -please send an email to the <a
  -href="mailto:log4j-user@jakarta.apache.org">log4j-user@jakarta.apache.org</a>
  -mailing list</b>. Uncaught exceptions are handled as serious bugs
  -requiring immediate attention.
  -
  -
  -<p>Moreover, log4j will not revert to System.out or System.err
  -when its designated output stream is not opened, is not writable or
  -becomes full. This avoids corrupting an otherwise working program by
  -flooding the user's terminal because logging fails. However, log4j
  -will output a single message to System.err indicating that logging can
  -not be performed.
  +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
   
  -<a name=prerequisites><h4>What are the prerequisites for log4j?</h4>
  +<!-- Content Stylesheet for Site -->
   
  -<ul>
  -
  -  <p><li>Log4j is JDK 1.1.x compatible.
  -  
  -  <p><li>The DOMConfigurator is based on the DOM Level 1 API. The
  -    DOMConfigurator.configure(Element) method will work with any XML
  -    parser that will pass it a DOM tree.
       
  -    <p>The DOMConfigurator.configure(String filename) method and its
  -    variants require a JAXP compatible XML parser, for example <a
  -    href="http://xml.apache.org/">Xerces</a> or Sun's
  -    parser. Compiling the DOMConfigurator requires the presence of a
  -    JAXP parser in the classpath.
  -
  -    <p><li>The <code>org.apache.log4j.net.SMTPAppender</code> relies
  -    on the <a href="http://java.sun.com/products/javamail/">JavaMail
  -    API</a>. It has been tested with JavaMail API version 1.2. The
  -    JavaMail API requires the <a
  -    href="http://java.sun.com/beans/glasgow/jaf.html">JavaBeans
  -    Activation Framework</a> package.
       
  -    <p><li>The <code>org.apache.log4j.net.JMSAppender</code> requires
  -    the presence of the JMS API as well as JNDI.
  -
  -
  -    <p><li>log4j test code relies on the <a
  -    href="http://www.junit.org">JUnit</a> testing framework.
  -
  -</ul>    
  -
  -<a name=usageExample><h4>Is there example code for using log4j?</h4>
  -
  -<p>See the <code>examples/</code> directory.
  -
  -<a name=features><h4 id="">What are the features of log4j?</h4>
  -
  -<ul>
  -
  -  <p><li>log4j is optimized for speed.
  +    
  +        
  +<!-- start the processing -->
  +    <!-- ====================================================================== -->
  +    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
  +    <!-- Main Page Section -->
  +    <!-- ====================================================================== -->
  +    <html>
  +        <head>
  +            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
  +
  +                                                    <meta name="author" value="Ceki Gulcu">
  +            <meta name="email" value="cgu@apache.org">
  +            
  +            
  +                                    
  +                         
  +            <link href="./css/site.css" rel="stylesheet" type="text/css"/>
  +                                   
  +
  +            <title>Log4j project - Frequently Asked Questions about log4j</title>
  +        </head>
  +
  +        <body bgcolor="#ffffff" text="#000000" link="#525D76">        
  +           <!-- START Header table --> 
  +                     <table class="banner" border="0">
  +     <tr>
  +       <td valign="top">
  +         <a href="http://logging.apache.org/">
  +           <img src="http://logging.apache.org/images/ls-logo.jpg" border="0"/>
  +         </a>
  +       </td>
  +       <td align="right">
  +                              	       <a href="http://logging.apache.org/log4j/docs/">
  +                 <img src="./images/logo.jpg" alt="The log4j project" border="0"/>
  +      	       </a>
  +                               </td>
  +     </tr>
  +   </table>
  +              <!-- END Header table --> 
  +
  +	   <div class="centercol">
  +             <hr noshade="" size="1"/>
  +		       
  +                                       <center>
  +    <h2>Frequently Asked Questions about log4j</h2>
  +    <h3>Ceki  Gülcü, Paul Smith, Chris Taylor<br />
  +    May 2002, last updated on September 15th, 2004</h3>
  +  </center>
  +                                                                                                                                                                                                                                              
  +            
  +  
  +                  <br/>
  +      <div class="index-faqSection">
  +        Section 1. <a href="#1"> Generalities</a>
  +      </div>
  +
  +                                                     <table class="index-question">
  +              <td nowrap="true" valign="top">Question 1.1</td>	      
  +              <td><a href="#1.1">What is log4j?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 1.2</td>	      
  +              <td><a href="#1.2">Is log4j a reliable logging system?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 1.3</td>	      
  +              <td><a href="#1.3">What are the prerequisites for log4j?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 1.4</td>	      
  +              <td><a href="#1.4">What are the features of log4j?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 1.5</td>	      
  +              <td><a href="#1.5">Is there example code for using log4j?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 1.6</td>	      
  +              <td><a href="#1.6">What documentation should I read to learn log4j?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 1.7</td>	      
  +              <td><a href="#1.7">Is log4j thread-safe?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 1.8</td>	      
  +              <td><a href="#1.8">What does log output look like?</a></td>           
  +            </table>
  +                                        <br/>
  +      <div class="index-faqSection">
  +        Section 2. <a href="#2"> Using log4j</a>
  +      </div>
  +
  +                                                     <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.1</td>	      
  +              <td><a href="#2.1">What are <em>Loggers</em>?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.2</td>	      
  +              <td><a href="#2.2">How can I change log behavior at runtime?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.3</td>	      
  +              <td><a href="#2.3">What is the fastest way of (not) logging?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.4</td>	      
  +              <td><a href="#2.4"> Are there any suggested ways for naming loggers?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.5</td>	      
  +              <td><a href="#2.5">How do I get the fully-qualified name of a class in a static block?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.6</td>	      
  +              <td><a href="#2.6">Can the log output format be customized? </a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.7</td>	      
  +              <td><a href="#2.7">What are the configurable options for <code>FooBarAppender</code>?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.8</td>	      
  +              <td><a href="#2.8">What is the recommended way of migrating from
  +      java.util.logging to log4j?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.9</td>	      
  +              <td><a href="#2.9">Is it possible to direct log output to
  +      different appenders by level? </a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.10</td>	      
  +              <td><a href="#2.10">What does the Windows NT Event Viewer complain about
  +      missing descriptions for my event messages when I use the
  +      <code>NTEventLogAppender</code>?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.11</td>	      
  +              <td><a href="#2.11">Why can't I map my logger names to the loggers that
  +      appear in the NT Event Log when I use the
  +      NTEventLogAppender?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 2.12</td>	      
  +              <td><a href="#2.12">Are there suggested approaches for logging in JSP pages?</a></td>           
  +            </table>
  +                                        <br/>
  +      <div class="index-faqSection">
  +        Section 3. <a href="#3"> Advanced questions</a>
  +      </div>
  +
  +                                                     <table class="index-question">
  +              <td nowrap="true" valign="top">Question 3.1</td>	      
  +              <td><a href="#3.1">Can the outputs of multiple client request go to
  +      different log files?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 3.2</td>	      
  +              <td><a href="#3.2">Logger instances seem to be create only. Why isn't
  +      there a method to remove logger instances?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 3.3</td>	      
  +              <td><a href="#3.3">How do I get multiple process to log to the same file?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 3.4</td>	      
  +              <td><a href="#3.4">How about the timesamps of events generated by multiple
  +      processes across multiple hosts (possibly across multiple
  +      timezones)?
  +      </a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 3.5</td>	      
  +              <td><a href="#3.5">Why can't log4j find my properties file in a J2EE or WAR
  +      application?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 3.6</td>	      
  +              <td><a href="#3.6">Is there a way to get log4j to automatically reload a
  +      configuration file if it changes?</a></td>           
  +            </table>
  +                                        <br/>
  +      <div class="index-faqSection">
  +        Section 4. <a href="#4"> Contributing to the project</a>
  +      </div>
  +
  +                                                     <table class="index-question">
  +              <td nowrap="true" valign="top">Question 4.1</td>	      
  +              <td><a href="#4.1">Why should I donate my extensions to log4j back to the
  +      project?
  +      </a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 4.2</td>	      
  +              <td><a href="#4.2">What should I keep in mind when contributing code?</a></td>           
  +            </table>
  +                                           <table class="index-question">
  +              <td nowrap="true" valign="top">Question 4.3</td>	      
  +              <td><a href="#4.3">How can I contribute a new question/answer to this
  +      document?</a></td>           
  +            </table>
  +                                            <hr/>
   
  -  <p><li>log4j is based on a named logger hierarchy.
  +  
  +                  <div class="faqSection">
  +        <a name="1">Section 1.</a> Generalities
  +      </div>
  +                                       
  +      <p>This section contains general questions about log4j.</p>
  +    
  +                                 <div class="question">
  +             <a name="1.1">1.1 What is log4j?</a>
  +           </div>
  +                      
  +	<p>log4j is a tool to help the programmer output log statements to a
  +	variety of output targets.
  +	</p>
  +
  +	<p>In case of problems with an application, it is helpful to
  +	enable logging so that the problem can be located. With log4j
  +	it is possible to enable logging at runtime without modifying
  +	the application binary.  The log4j package is designed so that
  +	log statements can remain in <i>shipped</i> code without
  +	incurring a high performance cost. It follows that the speed
  +	of logging (or rather not logging) is capital.
  +	</p>
  +
  +	<p>At the same time, log output can be so voluminous that it quickly
  +	becomes overwhelming. One of the distinctive features of log4j is the
  +	notion of <i>hierarchical loggers</i>. Using loggers it is
  +	possible to selectively control which log statements are output at
  +	arbitrary  granularity.
  +	</p>
  +
  +	<p>log4j is designed with two three goals in mind:
  +	reliability, speed and flexibility. There is a tight balance
  +	between these requirements. We believe that log4j strikes the
  +	right balance.
  +	</p>
         
  -  <p><li>log4j is fail-stop but not reliable.
  -
  -  <p><li>log4j is thread-safe.
  -
  -  <p><li>log4j is not restricted to a predefined set of facilities.
  -
  -  <p><li>Logging behavior can be set at runtime using a configuration
  -      file. Configuration files can be property files or in XML format.
  +                                 <div class="question">
  +             <a name="1.2">1.2 Is log4j a reliable logging system?</a>
  +           </div>
  +                      
  +	<p>No. log4j is not reliable. It is a best-effort 
  +	<em>fail-stop</em> logging system.
  +	</p>
  +
  +	<p>By fail-stop, we mean that log4j will not throw unexpected
  +	exceptions at run-time potentially causing your application to
  +	crash. <b>If for any reason, log4j throws an uncaught exception,
  +	please send an email to the <a href="mailto:log4j-user@logging.apache.org">log4j-user@logging.apache.org</a>
  +	mailing list</b>. Uncaught exceptions are handled as serious bugs
  +	requiring immediate attention.
  +	</p>
  +
  +	<p>Moreover, log4j will not revert to System.out or System.err
  +	when its designated output stream is not opened, is not writable or
  +	becomes full. This avoids corrupting an otherwise working program by
  +	flooding the user's terminal because logging fails. However, log4j
  +	will output a single message to System.err indicating that logging can
  +	not be performed.
  +	</p>
         
  -  <p><li>log4j is designed to handle Java Exceptions from the start.
  +                                 <div class="question">
  +             <a name="1.3">1.3 What are the prerequisites for log4j?</a>
  +           </div>
  +                      
  +	<ul>
  +	  <li><p>Log4j versions upto and including 1.2.8 are
  +	  compatible with JDK 1.1.x and later.  Log4j version 1.3 will
  +	  be compatilble with JDK 1.2 and later.
  +	  </p></li>
  +
  +	  <li><p>The DOMConfigurator is based on the DOM Level 1
  +	  API. The DOMConfigurator.configure(Element) method will work
  +	  with any XML parser that will pass it a DOM tree.
  +	  </p>
  +	  <p>The DOMConfigurator.configure(String filename) method and its
  +	  variants require a JAXP compatible XML parser, for example <a href="http://xml.apache.org/">Xerces</a> or Sun's
  +	  parser. Compiling the DOMConfigurator requires the presence of a
  +	  JAXP parser in the classpath.
  +	  </p>
  +	  </li>
  +
  +	  <li><p>The <code>org.apache.log4j.net.SMTPAppender</code>
  +	  relies on the <a href="http://java.sun.com/products/javamail/">JavaMail
  +	  API</a>. It has been tested with JavaMail API version
  +	  1.2. The JavaMail API requires the <a href="http://java.sun.com/beans/glasgow/jaf.html">JavaBeans
  +	  Activation Framework</a> package.
  +	  </p></li>
  +
  +	  <li><p>The <code>org.apache.log4j.net.JMSAppender</code>
  +	  requires the presence of the JMS API as well as JNDI.
  +	  </p></li>
  +
  +	  <li><p>log4j test code relies on the <a href="http://www.junit.org">JUnit</a> testing framework.
  +	  </p></li>
  +	</ul>    	
         
  -  <p><li>log4j can direct its output to a file, the console, an
  -      <code>java.io.OutputStream</code>, <code>java.io.Writer</code>,
  -      a remote server using TCP, a remote Unix Syslog daemon, to a
  -      remote listener using JMS, to the NT EventLog or even send e-mail.
  -
  -  <p><li>log4j uses 5 levels, namely DEBUG, INFO, WARN, ERROR and
  -  FATAL.
  -
  -  <p><li>The format of the log output can be easily changed by
  -      extending the Layout class.
  -
  -  <p><li>The target of the log output as well as the writing strategy
  -      can be altered by implementations of the Appender interface.
  -
  -   <p><li>log4j supports multiple output appenders per logger.
  +                                 <div class="question">
  +             <a name="1.4">1.4 What are the features of log4j?</a>
  +           </div>
  +                      
  +	<ul>
  +
  +	  <li><p>log4j is optimized for speed.</p></li>
  +
  +	  <li><p>log4j is based on a named logger hierarchy.</p></li>
  +	  
  +	  <li><p>log4j is fail-stop but not reliable.</p></li>
  +
  +	  <li><p>log4j is thread-safe.</p></li>
  +
  +	  <li><p>log4j is not restricted to a predefined set of
  +	  facilities.</p></li>
  +
  +	  <li><p>Logging behavior can be set at runtime using a
  +	  configuration file. Configuration files can be property
  +	  files or in XML format.  </p></li>
  +
  +	  <li><p>log4j is designed to handle Java Exceptions from the
  +	  start.</p></li>
  +	  
  +	  <li><p>log4j can direct its output to a file, the console,
  +	  an <code>java.io.OutputStream</code>,
  +	  <code>java.io.Writer</code>, a remote server using TCP, a
  +	  remote Unix Syslog daemon, to a remote listener using JMS,
  +	  to the NT EventLog or even send e-mail.  </p></li>
  +
  +	  <li><p>log4j uses 5 levels, namely DEBUG, INFO, WARN, ERROR and
  +	  FATAL.
  +	  </p></li>
  +
  +	  <li><p>The format of the log output can be easily changed by
  +	  extending the Layout class.
  +	  </p></li>	  
  +
  +	  <li><p>The target of the log output as well as the writing
  +	  strategy can be altered by implementations of the Appender
  +	  interface.  </p></li>
   
  -   <p><li>log4j supports internationalization.
  -       
  -</ul>
  +	  <li><p>log4j supports multiple output appenders per logger.
  +	  </p></li>
   
  -<a name=thread-safety><h4 id="">Is log4j thread-safe?</h4>
  -
  -Yes, log4j is thread-safe. 
  -
  -<a name=sample><h4 id="">What does log output look like?</h4>
  -
  -The log output can be customized in many ways. Moreover, one can completely
  -override the output format by implementing one's own Layout. 
  -
  -<p>Here is an example output using <em>PatternLayout</em> with
  -the conversion pattern <b>"%r [%t] %-5p %c{2} %x - %m%n"</b>
  +	  <li><p>log4j supports internationalization.</p></li>
  +	</ul>
  +      
  +                                 <div class="question">
  +             <a name="1.5">1.5 Is there example code for using log4j?</a>
  +           </div>
  +                      
  +	<p>See the <code>examples/</code> directory.</p>
  +      
  +                                 <div class="question">
  +             <a name="1.6">1.6 What documentation should I read to learn log4j?</a>
  +           </div>
  +                      
  +	<p>Make sure to read the <a href="manual.html">short
  +	manual</a>. It is also recommended to you read <a href="https://www.qos.ch/shop/products/clm_t.jsp">The complete
  +	log4j manual</a>. Both documents were written by Ceki
  +	Gülcü.
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="1.7">1.7 Is log4j thread-safe?</a>
  +           </div>
  +                      
  +	<p>Yes, log4j is thread-safe. Log4j components are designed to
  +	be used in heavily multithreaded systems.</p>
  +      
  +                                 <div class="question">
  +             <a name="1.8">1.8 What does log output look like?</a>
  +           </div>
  +                      
  +
  +	<p>The log output can be customized in many ways. Moreover,
  +	one can completely override the output format by implementing
  +	one's own Layout.
  +	</p>
  +
  +	<p>Here is an example output using <em>PatternLayout</em> with
  +	the conversion pattern <b>"%r [%t] %-5p %c{2} %x - %m%n"</b>
  +	</p>
   
  -<pre>
  +	<pre class="screen_output">
   176 [main] INFO  examples.Sort - Populating an array of 2 elements in reverse order.
   225 [main] INFO  examples.SortAlgo - Entered the sort method.
   262 [main] DEBUG SortAlgo.OUTER i=1 - Outer loop.
  @@ -220,393 +406,680 @@
           at org.log4j.examples.SortAlgo.dump(SortAlgo.java:58)
           at org.log4j.examples.Sort.main(Sort.java:64)
   467 [main] INFO  examples.Sort - Exiting main method.
  -</pre>
  -
  -<p>The first field is the number of milliseconds elapsed since the
  -start of the program. The second field is the thread outputting the
  -log statement. The third field is the level of the log
  -statement. The fourth field is the rightmost two components of the
  -logger making the log request. The fifth field (just before the '-')
  -is the <em>nested diagnostic context</em> (NDC). Note the nested diagnostic
  -context may be empty as in the first two statements. The text after
  -the '-' is the message of the statement.
  -
  -<a name=logger><h4 id="">What are <em>Loggers</em>?</h4>
  -
  -Lggers lie at the heart of log4j. Loggers define a hierarchy and give
  -the programmer <em>run-time</em> control on which statements are
  -printed or not.
  -
  -<p>Loggers are assigned levels. A log statement is printed
  -depending on its level <em>and</em> its logger.
  -
  -<p>Make sure to read the <a href=manual.html>log4j manual</a>
  -for more information.
  -
  -<a name=behavior><h4 id="">How can I change log behavior at runtime?</h4>
  +	</pre>
   
  -<p>Log behavior can be set using configuration files which are parsed
  -at runtime. Using configuration files the programmer can define
  -loggers and set their levels.
  -
  -<p>The <code>PropertyConfigurator</code> defines a particular format
  -of a configuration file. See also the <code>examples/Sort.java</code>
  -example and associated configuration files.
  -
  -<p>Configuration files can be specified in XML. See
  -<code>log4j.dtd</code> and
  -<code>org.log4j.xml.DOMConfigurator</code> for more details.
  -
  -<p>See the various Layout and Appender components for specific
  -configuration options.
  -
  -<p>In addition to configuration files, the user may disable all
  -messages belonging to a set of levels. See next item.
  -
  -<a name=fastLogging><h4>What is the fastest way of (not) logging?</h4>
  -
  -<p> For some logger <code>l</code>, writing, <pre>
  -  l.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
  -</pre>
  +	<p>The first field is the number of milliseconds elapsed since
  +	the start of the program. The second field is the thread
  +	outputting the log statement. The third field is the level of
  +	the log statement. The fourth field is the rightmost two
  +	components of the logger making the log request. The fifth
  +	field (just before the '-') is the <em>nested diagnostic
  +	context</em> (NDC). Note the nested diagnostic context may be
  +	empty as in the first two statements. The text after the '-'
  +	is the message of the statement.
  +	</p>
  +      
  +                              <div class="faqSection">
  +        <a name="2">Section 2.</a> Using log4j
  +      </div>
  +                                       
  +      <p>This section contains answers to questions encountered while
  +      using log4j.</p>
  +    
  +                                 <div class="question">
  +             <a name="2.1">2.1 What are <em>Loggers</em>?</a>
  +           </div>
  +                      
  +	<p>Lggers lie at the heart of log4j. Loggers define a hierarchy and give
  +	the programmer <em>run-time</em> control on which statements are
  +	printed or not.
  +	</p>
  +	
  +	<p>Loggers are assigned levels. A log statement is printed
  +	depending on its level <em>and</em> its logger.
  +	</p>
  +	
  +	<p>Make sure to read the <a href="manual.html">log4j manual</a>
  +	for more information.
  +	</p>	
  +      
  +                                 <div class="question">
  +             <a name="2.2">2.2 How can I change log behavior at runtime?</a>
  +           </div>
  +                      
  +	<p>Log behavior can be set using configuration files which are parsed
  +	at runtime. Using configuration files the programmer can define
  +	loggers and set their levels.
  +	</p>
  +	
  +	<p>The <code>PropertyConfigurator</code> defines a particular format
  +	of a configuration file. See also the <code>examples/Sort.java</code>
  +	example and associated configuration files.
  +	</p>
  +	
  +	<p>Configuration files can be specified in XML. See
  +	<code>log4j.dtd</code> and
  +	<code>org.log4j.xml.DOMConfigurator</code> for more details.
  +	</p>
  +	
  +	<p>See the various Layout and Appender components for specific
  +	configuration options.
  +	</p>
  +	
  +	<p>In addition to configuration files, the user may disable all
  +	messages belonging to a set of levels. See next item.
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="2.3">2.3 What is the fastest way of (not) logging?</a>
  +           </div>
  +                      
   
  -<p>incurs the cost of constructing the message parameter, that is
  -converting both integer <code>i</code> and <code>entry[i]</code> to a
  -String, and concatenating intermediate strings. This, regardless of
  -whether the message will be logged or not.
  +	<p> For some logger <code>l</code>, writing, 
  +	</p>
  +	
  +	<pre class="source">
  + l.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
  +	</pre>
  +	
  +	<p>incurs the cost of constructing the message parameter, that is
  +	converting both integer <code>i</code> and <code>entry[i]</code> to a
  +	String, and concatenating intermediate strings. This, regardless of
  +	whether the message will be logged or not.
  +	</p>
   
  -<p>If you are worried about speed, then write
  -<pre>
  +	<p>If you are worried about speed, then write</p>
  +	<pre class="source">
      if(l.isDebugEnabled()) {
        l.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
      }
  -</pre>
  -
  -<p>This way you will not incur the cost of parameter construction if
  -debugging is disabled for logger <code>l</code>. On the other
  -hand, if the logger is debug enabled, you will incur the cost of
  -evaluating whether the logger is enabled or not, twice: once in
  -<code>debugEnabled</code> and once in <code>debug</code>.  This is an
  -insignificant overhead since evaluating a logger takes less than 1%
  -of the time it takes to actually log a statement.
  -
  -<a name=namingLoggers><h4>Are there any suggested ways for naming
  -loggers?</a></h4>
  +	</pre>
   
  -<p>Yes, there are.
  -
  -<p>You can name loggers by <strong>locality</strong>. It turns out
  -that instantiating a logger in each class, with the logger name
  -equal to the fully-qualified name of the class, is a useful and
  -straightforward approach of defining loggers. This approach has
  -many benefits:
  -
  -<ul>
  -  <li>It is very simple to implement.
  -
  -  <li>It is very simple to explain to new developers.
  -
  -  <li>It automatically mirrors your application's own modular design.
  -
  -  <li>It can be further refined at will.
  -
  -  <li>Printing the logger automatically gives information on the locality
  -  of the log statement.
  -
  -</ul>
  -
  -
  -<p>However, this is not the only way for naming loggers. A common
  -alternative is to name loggers by <strong>functional
  -areas</strong>. For example, the "database" logger, "RMI" logger,
  -"security" logger, or the "XML" logger.
  -
  -<p>You may choose to name loggers by functionality and
  -subcategorize by locality, as in "DATABASE.com.foo.some.package.someClass" or
  -"DATABASE.com.foo.some.other.package.someOtherClass".
  -
  -<p><em>You are totally free in choosing the names of your
  -loggers.</em> The log4j package merely allows you to manage your
  -names in a hierarchy.  However, it is your responsibility to define
  -this hierarchy.
  -
  -<p>Note by naming loggers by locality one tends to name things by
  -functionality, since in most cases the locality relates closely to
  -functionality. 
  +	<p>This way you will not incur the cost of parameter
  +	construction if debugging is disabled for logger
  +	<code>l</code>. On the other hand, if the logger is debug
  +	enabled, you will incur the cost of evaluating whether the
  +	logger is enabled or not, twice: once in
  +	<code>debugEnabled</code> and once in <code>debug</code>.
  +	This is an insignificant overhead since evaluating a logger
  +	takes less than 1% of the time it takes to actually log a
  +	statement.
  +	</p>
  +	
  +      
  +                                 <div class="question">
  +             <a name="2.4">2.4  Are there any suggested ways for naming loggers?</a>
  +           </div>
  +                      
  +	
   
  -<a name=className><h4>How do I get the fully-qualified name of a class
  -in a static block?</a></h4>
  +	<p>Yes, there are.</p>
   
  -<p>You can easily retrieve the fully-qualified name of a class in a
  -static block for class X, with the statement
  -<code>X.class.getName()</code>. Note that <code>X</code> is the class
  -name and not an instance.  The <code>X.class</code> statement does
  -<i>not</i> create a new instance of class <code>X</code>.
  +	<p>You can name loggers by <strong>locality</strong>. It turns out
  +	that instantiating a logger in each class, with the logger name
  +	equal to the fully-qualified name of the class, is a useful and
  +	straightforward approach of defining loggers. This approach has
  +	many benefits:
  +	</p>
  +	
  +	<ul>
  +	  <li>It is very simple to implement.</li>
  +	  
  +	  <li>It is very simple to explain to new developers.</li>
  +	  
  +	  <li>It automatically mirrors your application's own modular design.
  +	  </li>
  +	  <li>It can be further refined at will.</li>
  +	  
  +	  <li>Printing the logger automatically gives information on the locality
  +	  of the log statement.	  </li>
  +	</ul>
  +
  +	<p>However, this is not the only way for naming loggers. A
  +	common alternative is to name loggers by <strong>functional
  +	areas</strong>. For example, the "database" logger, "RMI"
  +	logger, "security" logger, or the "XML" logger.
  +	</p>
  +
  +	<p>You may choose to name loggers by functionality and
  +	subcategorize by locality, as in "DATABASE.com.foo.some.package.someClass" or
  +	"DATABASE.com.foo.some.other.package.someOtherClass".
  +	</p>
  +	
  +	<p><em>You are totally free in choosing the names of your
  +	loggers.</em> The log4j package merely allows you to manage your
  +	names in a hierarchy.  However, it is your responsibility to define
  +	this hierarchy.
  +	</p>
  +	
  +	<p>Note by naming loggers by locality one tends to name things by
  +	functionality, since in most cases the locality relates closely to
  +	functionality. 
  +	</p>
   
  -<p>Here is the suggested usage template:
  +      
  +                                 <div class="question">
  +             <a name="2.5">2.5 How do I get the fully-qualified name of a class in a static block?</a>
  +           </div>
  +                      
  +	<p>You can easily retrieve the fully-qualified name of a class in a
  +	static block for class X, with the statement
  +	<code>X.class.getName()</code>. Note that <code>X</code> is the class
  +	name and not an instance.  The <code>X.class</code> statement does
  +	<i>not</i> create a new instance of class <code>X</code>.
  +	</p>
  +	
  +	<p>Here is the suggested usage template:</p>
   
  -<font color=BLUE><pre>
  +	<pre class="source">
   package a.b.c;
   
   public class Foo {
  -  static Logger logger = Logger.getLogger(Foo.class);
  +  final static Logger logger = Logger.getLogger(Foo.class);
     ... other code
   
   }
  -</pre></font>
  -
  -<a name=customLayouts><h4>Can the log output format be customized?</h4>
  +	</pre>
  +      
  +                                 <div class="question">
  +             <a name="2.6">2.6 Can the log output format be customized? </a>
  +           </div>
  +                      
  +	<p>Yes, you can extend the <code>Layout</code> class to create
  +	you own customized log format. Appenders can be parameterized
  +	to use the layout of your choice.
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="2.7">2.7 What are the configurable options for <code>FooBarAppender</code>?</a>
  +           </div>
  +                      
  +	<p>Log4j uses JavaBeans style configuration.</p>
  +
  +	<p>Thus, any setter method in <code>FooBarAppender</code>
  +	corresponds to a configurable option. For example, in <a href="api\org\apache\log4j\RollingFileAppender.html"><code>RollingFileAppender</code></a>
  +	the <a href="api/org/apache/log4j/RollingFileAppender.html#setMaxBackupIndex(int)"><code>setMaxBackupIndex(int
  +	maxBackups)</code></a> method corresponds to the
  +	<code>maxBackupIndex</code> option. The first letter of the
  +	option can be upper case, i.e.  <code>MaxBackupIndex</code>
  +	and <code>maxBackupIndex</code> are equivalent but not
  +	<code>MAXBACKUPIndex</code> nor <code>mAXBackupIndex</code>.
  +	</p>
  +
  +	<p>Layouts options are also defined by their setter methods. The same goes
  +	for most other log4j components.
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="2.8">2.8 What is the recommended way of migrating from
  +      java.util.logging to log4j?</a>
  +           </div>
  +                      
  +	
  +	<p>We suggest to just use global file search/replace.  You should be able
  +	to replace all the "java.util.Logger" references with
  +	"org.apache.log4j.Logger", and you should be on your way.
  +	</p>
  +	
  +	<p>If you're on a Win32 platform, we recommend <a href="http://www.textpad.com/">Textpad</a>. You can use the
  +	CTRL+SHIFT+O to open all *.java files from a directory including all
  +	its sub-directories, and then use the search/replace function to
  +	replace in all files, and then CTRL+SHIFT+S to save all.  Should take
  +	about 60 seconds!  :)
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="2.9">2.9 Is it possible to direct log output to
  +      different appenders by level? </a>
  +           </div>
  +                      
  +	<p>Yes it is. Setting the <b>Threshold</b> option of any appender
  +	extending <a href="api/org/apache/log4j/AppenderSkeleton.html">AppenderSkeleton</a>,
  +	(most log4j appenders extend AppenderSkeleton) to filter out all log
  +	events with <em>lower</em> level than the value of the threshold
  +	option. 
  +	</p>
  +
  +	<p>For example, setting the threshold of an appender to DEBUG
  +	also allow INFO, WARN, ERROR and FATAL messages to log along
  +	with DEBUG messages. This is usually acceptable as there is
  +	little use for DEBUG messages without the surrounding INFO,
  +	WARN, ERROR and FATAL messages. Similarly, setting the
  +	threshold of an appender to ERROR will filter out DEBUG, INFO
  +	and WARN messages but not ERROR or FATAL messages.
  +	</p>
  +
  +	<p>This policy usually best encapsulates what the user
  +	actually wants to do, as opposed to her mind-projected
  +	solution.
  +	</p>
  +	<p>See <i>examples/sort4.lcf</i> for an example threshold
  +	configuration.</p>
  +
  +	<p>If you must filter events by exact level match, then you can
  +	attach a <a href="api/org/apache/log4j/varia/LevelMatchFilter.html">LevelMatchFilter</a>
  +	to any appender to filter out logging events by exact level match.
  +	</p>
   
  -<p>Yes. Since release 0.7.0, you can extend the <code>Layout</code>
  -class to create you own customized log format. Appenders can be
  -parameterized to use the layout of your choice.
  -
  -<a name=NDC><h4>Can the outputs of multiple client request go to
  -different log files?</h4>
  -
  -Many developers are confronted with the problem of distinguishing the
  -log output originating from the same class but different client
  -requests. They come up with ingenious mechanisms to fan out the log
  -output to different files. In most cases, this is not the right
  -approach.
  -
  -<p>It is simpler to use a nested diagnostic context (NDC). Typically,
  -one would <em>NDC.push()</em> client specific information, such as the
  -client's hostname, ID or any other distinguishing information when
  -starting to handle the client's request. Thereafter, log output will
  -automatically include the nested diagnostic context so that you can
  -distinguish logs from different client requests even if they are
  -output to the same file.
  -
  -<p>See the <code>NDC</code> and the <code>PatternLayout</code> classes
  -for more information. The <code>NumberCruncher</code> example shows
  -how the NDC can be used to distinguish the log output from multiple
  -clients even if they share the same log file.
  -
  -<p>For select applications, such as virtual hosting web-servers, the
  -NDC solution is not sufficient. As of version 0.9.0, log4j supports
  -multiple hierarchy trees. Thus, it is possible to log to different
  -targets from the same logger depending on the current context.
  -
  -<p><a name="#options"><h4>What are the configurable options for
  -FooBarAppender?</h4>
  -
  -Log4j uses JavaBeans style configuration. 
  -
  -<p>Thus, any setter method in <code>FooBarAppender</code> corresponds
  -to a configurable option. For example, in <a
  -href="api\org\apache\log4j\RollingFileAppender.html">RollingFileAppender</a>
  -the <a
  -href="api/org/apache/log4j/RollingFileAppender.html#setMaxBackupIndex(int)">setMaxBackupIndex(int
  -maxBackups)</a> method corresponds to the <code>maxBackupIndex</code>
  -option. The first letter of the option can be upper case, i.e.
  -<code>MaxBackupIndex</code> and <code>maxBackupIndex</code> are
  -equivalent but not <code>MAXBACKUPIndex</code> nor
  -<code>mAXBackupIndex</code>.
  -
  -<p>Layouts options are also defined by their setter methods. Same goes
  -for most other log4j components.
  -
  -<!-- ------------------------------------------------------------------ -->
  -
  -<p><a name=rm><h4>Logger instances seem to be create only. Why isn't
  -there a method to remove logger instances?</h4>
  -
  -It is quite nontrivial to define the semantics of a "removed" logger
  -which is still referenced by the user. Future releases <em>may</em>
  -include a remove method in the Logger class.
  -
  -<a name=filterByLevel><h4>Is it possible to direct log output to
  -different appenders by level?</h4>
  -
  -<p>Yes it is. Setting the <b>Threshold</b> option of any appender
  -extending <a
  -href="api/org/apache/log4j/AppenderSkeleton.html">AppenderSkeleton</a>,
  -(most log4j appenders extend AppenderSkeleton) to filter out all log
  -events with <em>lower</em> level than the value of the threshold
  -option. 
  -
  -<p>For example, setting the threshold of an appender to DEBUG also
  -allow INFO, WARN, ERROR and FATAL messages to log along with DEBUG
  -messages. This is usually acceptable as there is little use for DEBUG
  -messages without the surrounding INFO, WARN, ERROR and FATAL
  -messages. Similarly, setting the threshold of an appender to ERROR
  -will filter out DEBUG, INFO and WARN messages but not ERROR or FATAL
  -messages.
  -
  -<p>This policy usually best encapsulates what the user actually wants
  -to do, as opposed to her mind-projected solution.
  -
  -<p>See <i>examples/sort4.lcf</i> for an example threshold
  -configuration.
  -
  -<p>If you must filter events by exact level match, then you can
  -attach a <a
  -href="api/org/apache/log4j/varia/LevelMatchFilter.html">LevelMatchFilter</a>
  -to any appender to filter out logging events by exact level match.
  -
  -
  -<p><a name=many21><h4>How do I get multiple process to log to the same file?</h4></a>
  -
  -<p>You may have each process log to a 
  -<a href="api/org/apache/log4j/net/SocketAppender.html"><code>SocketAppender</code></a>.  
  -The receiving 
  -<a href="api/org/apache/log4j/net/SocketServer.html"><code>SocketServer</code></a>  
  -(or 
  -<a href="api/org/apache/log4j/net/SimpleSocketServer.html"><code>SimpleSocketServer</code></a>)
  -can receive all the events and send them to a single
  -log file.
  -
  -<p><a name=timestamp><h4>If I have many processes across multiple hosts
  -(possibly across multiple timezones) logging to the same file using the
  -method above, what happens to timestamps?</h4>
  -
  -<p>The timestamp is created when the logging event is created.  That is
  -so say, when the <code>debug</code>, <code>info</code>, <code>warn</code>, 
  -<code>error</code> or <code>fatal</code> method is invoked.
  -This is unaffected by the time at which they may arrive at a remote
  -socket server.  Since the timestamps are stored in UTC format inside
  -the event, they all appear in the same timezone as the host creating the
  -logfile.  Since the clocks of various machines may not be synchronized,
  -this may account for time interval inconsistencies between events generated 
  -on different hosts.
  -
  -<p>While this is the intended behavior, it only recently became so due to
  -a bug discovery between version 1.0.4 and 1.1b1.  Versions 1.0.4 and before
  -had their timestamp regenerated in the converter.  In this case the timestamps
  -seen in the log file would all appear in order, generated at the time they
  -arrived at the log server host according to its local clock.
  -
  -<p><a name=j2ee><h4>Why can't log4j find my properties file in a J2EE
  -or WAR application?</h4>
  -
  -The short answer: the log4j classes and the properties file are not
  -within the scope of the same classloader.<P>
  -
  -The long answer (and what to do about it): J2EE or Servlet containers
  -utilize Java's class loading system.  Sun changed the way classloading
  -works with the release of Java 2.  In Java 2, classloaders are
  -arranged in a hierarchial parent-child relationship.  When a child
  -classloader needs to find a class or a resource, it first delegates
  -the request to the parent. 
  -
  -<P>Log4j only uses the default <CODE>Class.forName()</code> mechanism
  -for loading classes.  Resources are handled similarly.  See the
  -documentation for <CODE>java.lang.ClassLoader</CODE> for more details.
  -
  -<P>So, if you're having problems, try loading the class or resource
  -yourself.  If you can't find it, neither will log4j. ;)
  -
  -<P><A NAME=configureandwatch><H4>Is there a way to get log4j to
  -automatically reload a configuration file if it changes?</H4>
  -
  -<P>Yes.  Both the DOMConfigurator and the PropertyConfigurator support
  -automatic reloading through the <CODE>configureAndWatch</CODE> APIs.
  -See the API documentation for more details.
  -
  -<P><A NAME=nteventlogproblems><H4>What does the Windows NT Event
  -Viewer complain about missing descriptions for my event messages when
  -I use the NTEventLogAppender?</H4>
  -
  -<P>The NT Event Viewer relies on <I>message resource</I> DLLs to
  -properly view an event message.  The NTEventLogAppender.dll contains
  -these message resources, but that DLL must be copied to
  -%SYSTEMROOT%\SYSTEM32 for it to work properly.
  -
  -																						
  -<P><A NAME=morenteventlogproblems><H4>Why can't I map my logger names
  -to the loggers that appear in the NT Event Log when I use the
  -NTEventLogAppender?</H4>
  -
  -<P>Unfotunately, the logger names are hardcoded within the message
  -resource DLL (see previous question about NTEventLogAppender), so
  -there isn't any easy way to override those dynamically... in fact, I
  -don't think it's possible to do it, as you'd have to modify the DLL
  -resources for every application. Since most native applications don't
  -use the Logger column anyway...
  -
  -<p><a name=tax><h4>Why should I donate my extensions to log4j back to the
  -project?</h4>
  -
  -Contrary to the GNU Public License (GPL) the Apache Software License
  -does not make any claims over your extensions. By extensions, we mean
  -totally new code that invokes existing log4j classes. <em>You are free
  -to do whatever you wish with your proprietary log4j extensions.</em>
  -In particular, you may choose to never release your extensions to the
  -wider public.
  -
  -<p>We are very careful not to change the log4j client API so that
  -newer log4j releases are backward compatible with previous
  -versions. We are a lot less scrupulous with the internal log4j
  -API. Thus, if your extension is designed to work with log4j version
  -<code>n</code>, then when log4j release version <code>n+1</code> comes
  -out, you will probably need to adapt your proprietary extensions to
  -the new release.
  -
  -Thus, you will be forced to spend precious resources in order to keep
  -up with log4j changes. This is commonly referred to as the
  -"stupid-tax."  By donating the code and making it part of the standard
  -distribution, you save yourself the unnecessary maintenance work.
  -
  -<p>If your extensions are useful then someone will eventually write an
  -extension providing the same or very similar functionality.  Your
  -development effort will be wasted. Unless the proprietary log4j
  -extension is business critical, there is little reason for not
  -donating your extensions back to the project.
  +      
  +                                 <div class="question">
  +             <a name="2.10">2.10 What does the Windows NT Event Viewer complain about
  +      missing descriptions for my event messages when I use the
  +      <code>NTEventLogAppender</code>?</a>
  +           </div>
  +                      
  +	<p>The NT Event Viewer relies on <i>message resource</i> DLLs
  +	to properly view an event message.  The NTEventLogAppender.dll
  +	contains these message resources, but that DLL must be copied
  +	to %SYSTEMROOT%\SYSTEM32 for it to work properly.
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="2.11">2.11 Why can't I map my logger names to the loggers that
  +      appear in the NT Event Log when I use the
  +      NTEventLogAppender?</a>
  +           </div>
  +                      
  +																				
  +	<p>Unfotunately, the logger names are hardcoded within the
  +	message resource DLL (see previous question about
  +	NTEventLogAppender), so there isn't any easy way to override
  +	those dynamically... in fact, I don't think it's possible to
  +	do it, as you'd have to modify the DLL resources for every
  +	application. Since most native applications don't use the
  +	Logger column anyway...
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="2.12">2.12 Are there suggested approaches for logging in JSP pages?</a>
  +           </div>
  +                      
  +        <p>
  +        The suggested approach depends on your design requirements.  If you or
  +        your organization has no constraints on the use of Java in JSP pages,
  +        simply use log4j normally in <code>&lt;% ... %&gt;</code> statements
  +        as indicated in the Short Manual and the rest of the documentation.
  +        </p>
  +        <p>
  +        However, if your design calls for a minimum amount of Java in your JSP
  +        pages, consider using the
  +        <a href="http://jakarta.apache.org/taglibs/doc/log-doc/intro.html">Log Taglib</a>
  +        from the Jakarta Taglibs project.  It provides logging JSP tags that invoke
  +        log4j.
  +        </p>
  +      
  +                              <div class="faqSection">
  +        <a name="3">Section 3.</a> Advanced questions
  +      </div>
  +                                       
  +      <p>This section contains answers to more advanced questions about log4j.</p>
  +    
  +                                 <div class="question">
  +             <a name="3.1">3.1 Can the outputs of multiple client request go to
  +      different log files?</a>
  +           </div>
  +                      
  +	
  +	<p>Many developers are confronted with the problem of
  +	distinguishing the log output originating from the same class
  +	but different client requests. They come up with ingenious
  +	mechanisms to fan out the log output to different files. In
  +	most cases, this is not the right approach.
  +	</p>
  +
  +	<p>It is simpler to use a nested diagnostic context
  +	(NDC). Typically, one would <em>NDC.push()</em> client
  +	specific information, such as the client's hostname, ID or any
  +	other distinguishing information when starting to handle the
  +	client's request. Thereafter, log output will automatically
  +	include the nested diagnostic context so that you can
  +	distinguish logs from different client requests even if they
  +	are output to the same file.
  +	</p>
  +
  +	<p>See the <code>NDC</code> and the <code>PatternLayout</code>
  +	classes for more information. The <code>NumberCruncher</code>
  +	example shows how the NDC can be used to distinguish the log
  +	output from multiple clients even if they share the same log
  +	file.
  +	</p>
  +
  +	<p>For select applications, such as virtual hosting
  +	web-servers, the NDC solution is not sufficient. As of version
  +	0.9.0, log4j supports multiple hierarchy trees. Thus, it is
  +	possible to log to different targets from the same logger
  +	depending on the current context.
  +	</p>
   
  -<a name=help><h4>What should I keep in mind when contributing
  -code?</h4>
  +      
  +                                 <div class="question">
  +             <a name="3.2">3.2 Logger instances seem to be create only. Why isn't
  +      there a method to remove logger instances?</a>
  +           </div>
  +                      
  +	<p>It is quite nontrivial to define the semantics of a
  +	"removed" logger escecially if it is still referenced by the
  +	user. Future releases <em>may</em> include a remove method in
  +	the Logger class.</p>
  +      
  +                                 <div class="question">
  +             <a name="3.3">3.3 How do I get multiple process to log to the same file?</a>
  +           </div>
  +                      
  +	<p>You may have each process log to a 
  +	<a href="api/org/apache/log4j/net/SocketAppender.html"><code>SocketAppender</code></a>.  
  +	The receiving 
  +	<a href="api/org/apache/log4j/net/SocketServer.html"><code>SocketServer</code></a>  
  +	(or 
  +	<a href="api/org/apache/log4j/net/SimpleSocketServer.html"><code>SimpleSocketServer</code></a>)
  +	can receive all the events and send them to a single
  +	log file.
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="3.4">3.4 How about the timesamps of events generated by multiple
  +      processes across multiple hosts (possibly across multiple
  +      timezones)?
  +      </a>
  +           </div>
  +                      
  +	
  +	<p>The timestamp is created when the logging event is created.
  +	That is so say, when the <code>debug</code>,
  +	<code>info</code>, <code>warn</code>, <code>error</code> or
  +	<code>fatal</code> method is invoked.  Thus, the timestamp is
  +	unaffected by the time at which event arrive at a remote
  +	socket server.  
  +	</p>
  +	
  +	<p>Timestamps are stored in UTC format inside the
  +	event. Consequently, when displayed or written to a log file,
  +	timestamps appear in the same timezone as the host displaying
  +	or creating the logfile.  Note that because the clocks of
  +	various machines may not be synchronized, there may be
  +	timestamp inconsistencies between events generated on
  +	different hosts.
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="3.5">3.5 Why can't log4j find my properties file in a J2EE or WAR
  +      application?</a>
  +           </div>
  +                      
  +
  +	<p>The short answer: the log4j classes and the properties file
  +	are not within the scope of the same classloader.
  +	</p>
  +
  +	<p>The long answer (and what to do about it): J2EE or Servlet
  +	containers utilize Java's class loading system.  Sun changed
  +	the way classloading works with the release of Java 2.  In
  +	Java 2, classloaders are arranged in a hierarchial
  +	parent-child relationship.  When a child classloader needs to
  +	find a class or a resource, it first delegates the request to
  +	the parent.
  +	</p>
  +
  +	<p>Log4j only uses the default <code>Class.forName()</code>
  +	mechanism for loading classes.  Resources are handled
  +	similarly.  See the documentation for
  +	<code>java.lang.ClassLoader</code> for more details.
  +	</p>
  +
  +	<p>So, if you're having problems, try loading the class or
  +	resource yourself.  If you can't find it, neither will
  +	log4j. ;)
  +	</p>
   
  -<ol>
  +      
  +                                 <div class="question">
  +             <a name="3.6">3.6 Is there a way to get log4j to automatically reload a
  +      configuration file if it changes?</a>
  +           </div>
  +                      
  +	<p>Yes.  Both the DOMConfigurator and the PropertyConfigurator support
  +	automatic reloading through the <code>configureAndWatch</code> method.
  +	See the API documentation for more details.
  +	</p>
  +
  +
  +	<p>Because the <code>configureAndWatch</code> launches a
  +	separate wathdog thread, and because there is no way to stop
  +	this thread in log4j 1.2, the <code>configureAndWatch</code>
  +	method is unsafe for use in J2EE envrironments where
  +	applications are recycled.
  +	</p>
  +	
  +      
  +                              <div class="faqSection">
  +        <a name="4">Section 4.</a> Contributing to the project
  +      </div>
  +                                       
  +      <p>This section includes questions about contributing to the
  +      project</p>
  +    
  +                                 <div class="question">
  +             <a name="4.1">4.1 Why should I donate my extensions to log4j back to the
  +      project?
  +      </a>
  +           </div>
  +                      
  +	<p>Contrary to the GNU Public License (GPL) the Apache
  +	Software License does not make any claims over your
  +	extensions. By extensions, we mean totally new code that
  +	invokes existing log4j classes. <em>You are free to do
  +	whatever you wish with your proprietary log4j extensions.</em>
  +	In particular, you may choose to never release your extensions
  +	to the wider public.
  +	</p>
  +	
  +	<p>We are very careful not to change the log4j client API so
  +	that newer log4j releases are backward compatible with
  +	previous versions. We are a lot less scrupulous with the
  +	internal log4j API. Thus, if your extension is designed to
  +	work with log4j version <code>n</code>, then when log4j
  +	release version <code>n+1</code> comes out, you will probably
  +	need to adapt your proprietary extensions to the new release.
  +	</p>
  +
  +	<p>Thus, you will be forced to spend precious resources in
  +	order to keep up with log4j changes. This is commonly referred
  +	to as the "stupid-tax."  By donating the code and making it
  +	part of the standard distribution, you save yourself the
  +	unnecessary maintenance work.
  +	</p>
  +
  +	<p>If your extensions are useful then someone will eventually
  +	write an extension providing the same or very similar
  +	functionality.  Your development effort will be wasted. Unless
  +	the proprietary log4j extension is business critical, there is
  +	little reason for not donating your extensions back to the
  +	project.
  +	</p>
  +      
  +                                 <div class="question">
  +             <a name="4.2">4.2 What should I keep in mind when contributing code?</a>
  +           </div>
  +                      
  +	<ol>
  +
  +	  <li>
  +	    <p>Write a test case for your contribution.</p>
  +
  +	    <p>There is nothing more irritating than finding the bugs
  +	    in debugging (i.e. logging) code. Writing a test case
  +	    takes some effort but is crucial for a widely used library
  +	    such as log4j. Writing a test case will go a long way in
  +	    earning you the respect of fellow developers. See the
  +	    tests/ directory for exiting test cases.
  +	    </p>
  +	  </li>
  +
  +	  
  +	  <li>
  +	    <p>Stick to the existing indentation style even if you hate it.</p>
  +	    
  +	    <p>Alternating between indentation styles makes it hard to
  +	    understand the source code. Make it a little harder on
  +	    yourself but easier on others.
  +	    </p>
  +
  +	    <p>Log4j has adopted a rather conservative approach by
  +	    following the <a href="http://java.sun.com/docs/codeconv/">Code Conventions
  +	    for the JavaTM Programming Language</a>. <b>We use 2 (two)
  +	    spaces for indentation and no tabs.</b>
  +	    </p>
  +	  </li>
  +
  +	  <li>
  +	    <p>Please do not both modify the code and change the
  +	    indentation in a single commit.</p>
  +	    
  +	    <p>If you change the code and reformat it at the same time
  +	    and then commit, the commit notification message will be
  +	    hard to read. It will contain many diffs associated with
  +	    the reformatting in addition to logical changes.
  +	    </p>
  +
  +	    <p>If you must reformat and change the code, then perform
  +	    each step separately. For example, reformat the code and
  +	    commit. Following that, you can change the logic and
  +	    commit. The two steps can be performed in the reverse
  +	    order just as well. You can first change the logic and
  +	    commit and only later reformat and commit.
  +	    </p>
  +
  +	  </li>
  +	  <li>
  +	    <p>Make every effort to stick to the JDK 1.1 API.</p>
  +	    
  +	    <p>One of the important advantages of log4j is its
  +	    compatibility with JDK 1.1.x.
  +	    </p>
  +	  </li>
  +
  +	  <li>
  +	    <p>Always keep it simple, small and fast when
  +	    possible.</p>
  +
  +	    <p>It's all about the application not about logging.</p>
  +	  </li>
  +	  
  +	  <li>
  +	    <p>Identify yourself as a contributor at the top of the
  +	    relevant file.
  +	    </p>
  +	  </li>
  +	  <li>
  +	    <p>Take responsibility for your code.</p>
  +	    
  +	    <p>Authoring software is very much like running a marathon. It
  +	    takes time and endurance.
  +	    </p>
  +	  </li>
  +	  <li>
  +	    <p>Did we mention sticking with the indentation style? </p>
  +	  </li>
  +	  <li><p>Did we mention writing test cases? </p>
  +	  </li>
  +	  
  +	</ol>
  +      
  +                                 <div class="question">
  +             <a name="4.3">4.3 How can I contribute a new question/answer to this
  +      document?</a>
  +           </div>
  +                      
  +	<p>Log4j uses <a href="http://jakarta.apache.org/velocity/anakia.html">velocity-anakia</a>
  +	to generate its web-site, including this FAQ. We have devised
  +	special macros to help us automatically generate labeled
  +	question/answer pairs.
  +	</p>
  +
  +	<p>If you are not a commiter, you can simply submit your new
  +	question/answer pair to the log4j-dev@logging.apache.org
  +	mailing list. The committers will take it from there.
  +	</p>
  +
  +	<p>If you are a committer, then you must edit the
  +	<em>/src/xdocs/faq.xml</em> file. The format of the file
  +	should be self-evident. After you have made your changes, run
  +	the command
  +	</p>
  +	<pre class="source">ant site</pre>
  +
  +	<p>After the appropriate transformation, your changes should
  +	appear in the file <em>/docs/faq.html</em>.
  +	</p>
  +      
  +                    
   
  -  <li><b>Write a test case for your contribution.</b>
  +             
  +                <!-- FOOTER -->
  +              <div align="center"><font color="#525D76" size="-1"><em>
  +                 Copyright &#169; 1999-2004, Apache Software Foundation
  +               </em></font></div>
  +
  +           <!-- END main table --> 
  +
  +           <!-- LEFT SIDE NAVIGATION -->
  +             <!-- ============================================================ -->
  +  <div class="leftcol">
  +               <div class="menu_header">Log4j Project</div>
  +              	 <div class="menu_item">        <a href="./index.html">Introduction</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="./download.html">Download</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="./documentation.html">Documentation</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="./chainsaw.html">Chainsaw</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="./plan.html">Plan</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="http://wiki.apache.org/logging-log4j/Log4JProjectPages">Wiki</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="./contactUs.html">Contact us</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="./contributors.html">Contributors</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="./history.html">History</a>
  +  </div>
  +                  <div class="menu_header">Logging Services</div>
  +              	 <div class="menu_item">        <a href="http://logging.apache.org/">Home page</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="http://logging.apache.org/site/news.html">News</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="http://logging.apache.org/site/mission-statement.html">Mission</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="http://logging.apache.org/site/bylaws.html">Guidelines</a>
  +  </div>
  +                  <div class="menu_header">Translations</div>
  +              	 <div class="menu_item">        <a href="http://jakarta.apache-korea.org/log4j/index.html">Korean</a>
  +  </div>
  +              	 <div class="menu_item">        <a href="http://www.ingrid.org/jajakarta/log4j/">Japanese</a>
  +  </div>
  +             </div> 
      
  -    <p>There is nothing more irritating than finding the bugs in
  -    debugging (i.e. logging) code. Writing a test case takes some
  -    effort but is crucial for a widely used library such as
  -    log4j. Writing a test case will go a long way in earning you the
  -    respect of fellow developers. See the tests/ directory for exiting
  -    test cases.
   
  -  </li>
  +        </body>
  +    </html>
  +<!-- end the processing -->
  +
  +
  +
  +
  +
   
   
  -  <p><li>Stick to the existing indentation style even if you hate it.
   
  -      <p>Alternating between indentation styles makes it hard to
  -      understand the source code. Make it hard on yourself but easier
  -      on others. Log4j follows the <a
  -      href=http://java.sun.com/docs/codeconv/>Code Conventions for
  -      the JavaTM Programming Language</a>.
   
  -  <p><li>Make every effort to stick to the JDK 1.1 API.
   
  -     <p>One of the important advantages of log4j is its compatibility with 
  -     JDK 1.1.x. 
  -      
  -   <p><li>Keep it simple, small and fast.
   
  -       <p>It's all about the application not about logging.
   
  -    <p><li>Identify yourself as the contributor at the top of the
  -	relevant file. 
   
  -    <p><li>Take responsibility for your code.
  -	
  -	<p>Authoring software is very much like running a marathon. It
  -	takes time and endurance.
   
  -    <p><li>Did I mention sticking with the indentation style? 
   
  -    <p><li>Did I mention writing test cases? 
  -	
  -</ol>
   
  -<a name=download><h4>Where can I find the latest distribution of log4j?</h4>
   
  -<p>The log4j project is hosted at <a
  -href="http://jakarta.apache.org/log4j/">http://jakarta.apache.org/log4j/</a>.
  -<p>
  -<hr>
   
   
  -</body> </html>
  
  
  
  1.97.2.19 +18 -0     logging-log4j/docs/HISTORY
  
  Index: HISTORY
  ===================================================================
  RCS file: /home/cvs/logging-log4j/docs/HISTORY,v
  retrieving revision 1.97.2.18
  retrieving revision 1.97.2.19
  diff -u -r1.97.2.18 -r1.97.2.19
  --- HISTORY	19 Feb 2003 05:04:48 -0000	1.97.2.18
  +++ HISTORY	3 Nov 2004 18:39:08 -0000	1.97.2.19
  @@ -5,6 +5,24 @@
          client code. 
    [***] Changes requiring important modifications to existing client code.
   
  +
  + November 1st, 2004
  +
  + - Release of version 1.2.9
  +
  +  Log4j version 1.2.9, is identical to version 1.2.8, except that
  +  several key methods have been deprecated in preparation for version
  +  1.3.0, the next major release of log4j. These changes are intended to
  +  enforce the rule that client code should never refer to the Category
  +  class directly, but use the Logger class instead. Similarly, client
  +  code should not refer to the Priority class but to the Level class
  +  instead.
  +
  +  For a more detailed discussion, refer to the document entitled
  +  preparing for log4j 1.3 at:
  +
  +    http://www.qos.ch/logging/preparingFor13.jsp
  +
    February 19th, 2003
    
    - Release of version 1.2.8
  
  
  
  1.33.2.5  +2 -2      logging-log4j/docs/manual.html
  
  Index: manual.html
  ===================================================================
  RCS file: /home/cvs/logging-log4j/docs/manual.html,v
  retrieving revision 1.33.2.4
  retrieving revision 1.33.2.5
  diff -u -r1.33.2.4 -r1.33.2.5
  --- manual.html	18 Feb 2003 17:15:17 -0000	1.33.2.4
  +++ manual.html	3 Nov 2004 18:39:08 -0000	1.33.2.5
  @@ -25,7 +25,7 @@
         edition of JavaWorld. However, the present article contains more
         detailed and up to date information. The present short manual
         also borrows some text from <a
  -      href="https://www.qos.ch/shop/products/clm_t.jsp">"<em>The
  +      href="https://www.qos.ch/shop/products/eclm/">"<em>The
         complete log4j manual</em>"</a> by the same author (yours
         truly).
   
  @@ -52,7 +52,7 @@
   href="http://www.opensource.org">open source</a> initiative. The
   latest log4j version, including full-source code, class files and
   documentation can be found at <a
  -href="http://jakarta.apache.org/log4j/"><b>http://jakarta.apache.org/log4j/</b></a>.
  +href="http://logging.apache.org/log4j/"><b>http://logging.apache.org/log4j/</b></a>.
   By the way, log4j has been ported to the C, C++, C#, Perl, Python,
   Ruby, and Eiffel languages.
   
  
  
  

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


Mime
View raw message