You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ca...@apache.org on 2007/05/11 17:36:56 UTC

svn commit: r537211 [3/3] - in /logging/log4j/branches/v1_2-branch/src: changes/changes.xml site/apt/books.apt site/apt/index.apt site/apt/publications.apt site/apt/roadmap.apt site/fml/faq.fml site/site.xml

Modified: logging/log4j/branches/v1_2-branch/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/src/site/apt/index.apt?view=diff&rev=537211&r1=537210&r2=537211
==============================================================================
--- logging/log4j/branches/v1_2-branch/src/site/apt/index.apt (original)
+++ logging/log4j/branches/v1_2-branch/src/site/apt/index.apt Fri May 11 08:36:55 2007
@@ -1,135 +1,70 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one or more
+~~ contributor license agreements.  See the NOTICE file distributed with
+~~ this work for additional information regarding copyright ownership.
+~~ The ASF licenses this file to You under the Apache License, Version 2.0
+~~ (the "License"); you may not use this file except in compliance with
+~~ the License.  You may obtain a copy of the License at
+~~
+~~      http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing, software
+~~ distributed under the License is distributed on an "AS IS" BASIS,
+~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~~ See the License for the specific language governing permissions and
+~~ limitations under the License.
  ------
- What is Maven?
+ log4j 1.2
  ------
- Jason van Zyl
  ------
- 12 October 2005
  ------
 
-Introduction
+    Inserting log statements into your code is a low-tech method
+	for debugging it.  It may also be the only way because
+	debuggers are not always available or applicable.  This is
+	often the case for distributed applications.
+
+    On the other hand, some people argue that log statements
+	pollute source code and decrease legibility. (We believe that
+	the contrary is true).  In the Java language where a
+	preprocessor is not available, log statements increase the
+	size of the code and reduce its speed, even when logging is
+	turned off.  Given that a reasonably sized application may
+	contain thousands of log statements, speed is of particular
+	importance.
+
+
+    With log4j it is possible to enable logging at runtime
+	without modifying the application binary. The log4j package is
+	designed so that these statements can remain in shipped code
+	without incurring a heavy performance cost. Logging behavior
+	can be controlled by editing a configuration file, without
+	touching the application binary.
+
+    Logging equips the developer with detailed context for
+	application failures. On the other hand, testing provides
+	quality assurance and confidence in the application. Logging
+	and testing should not be confused. They are
+	complementary. When logging is wisely used, it can prove to be
+	an essential tool.
+
+    One of the distinctive features of log4j is the notion of
+	inheritance in loggers. Using a logger
+	hierarchy it is possible to control which log
+	statements are output at arbitrarily fine granularity but also
+	great ease. This helps reduce the volume of logged output and
+	minimize the cost of logging.
+
+    The target of the log output can be a file, an
+	OutputStream, a java.io.Writer, a
+	remote log4j server, a remote Unix Syslog daemon, or many other output targets.
+
+    On an AMD Duron clocked at 800Mhz running JDK 1.3.1, it costs
+	about 5 nanoseconds to determine if a logging statement should
+	be logged or not. Actual logging is also quite fast, ranging
+	from 21 microseconds using the SimpleLayout, 37
+	microseconds using the TTCCLayout.  The performance of the
+	PatternLayout is almost as good as the dedicated layouts,
+	except that it is much more flexible.
 
- Maven was originally started as an attempt to simplify the build
- processes in the Jakarta Turbine project. There were several
- projects each with their own Ant build files that were all slightly
- different and JARs were checked into CVS. We wanted a standard way to
- build the projects, a clear definition of what the project consisted
- of, an easy way to publish project information and a way to share JARs
- across several projects.
-
- The result is a tool that can now be used for building and managing
- any Java-based project. We hope that we have created something that
- will make the day-to-day work of Java developers easier and generally
- help with the comprehension of any Java-based project.
-
-Maven's Objectives
-
- Maven's primary goal is to allow a developer to comprehend the
- complete state of a development effort in the shortest period of
- time. In order to attain this goal there are several areas of concern
- that Maven attempts to deal with:
-
- * Making the build process easy
-
- * Providing a uniform build system
-
- * Providing quality project information
-
- * Providing guidelines for best practices development
-
- * Allowing transparent migration to new features
-
-* Making the build process easy
-
- While using Maven doesn't eliminate the need to know about the
- underlying mechanisms, Maven does provide a lot of shielding
- from the details.
-
-* Providing a uniform build system
-
- Maven allows a project to build using its project object model (POM) and
- a set of plugins that are shared by all projects using
- Maven, providing a uniform build system. Once you familiarize yourself
- with how one Maven project builds you automatically know how all Maven
- projects build saving you immense amounts of time when trying to
- navigate many projects.
-
-* Providing quality project information
-
- Maven provides plenty of useful project information that is in
- part taken from your POM and in part generated from your project's
- sources. For example, Maven can provide:
-
- * Change log document created directly from source control
-
- * Cross referenced sources
-
- * Mailing lists
-
- * Dependency list
-
- * Unit test reports including coverage
-
- []
-
- As Maven improves the information set provided will improve, all of
- which will be transparent to users of Maven.
-
- Other products can also provide Maven plugins to allow their set of
- project information alongside some of the standard information given by
- Maven, all still based on the POM.
-
-* Providing guidelines for best practices development
-
- Maven aims to gather current principles for best practices development, and
- make it easy to guide a project in that direction.
-
- For example, specification, execution, and reporting of unit tests are part of
- the normal build cycle using Maven.
- Current unit testing best practices were used as guidelines:
-
- * Keeping your test source code in a separate, but parallel source tree
-
- * Using test case naming conventions to locate and execute tests
-
- * Have test cases setup their environment and don't rely on customizing the build  for test preparation.
-
- []
-
- Maven also aims to assist in project workflow such as release management and
- issue tracking.
-
- Maven also suggests some guidelines on how to layout your project's directory structure
- so that once you learn the layout you can easily navigate any other project that uses
- Maven and the same defaults.
-
-* Allowing transparent migration to new features
-
- Maven provides an easy way for Maven clients to update their installations
- so that they can take advantage of any changes that been made to
- Maven itself.
-
- Installation of new or updated plugins from third parties or Maven itself has
- been made trivial for this reason.
-
-What is Maven Not?
-
- You may have heard some of the following things about Maven:
-
- * Maven is a site and documentation tool
-
- * Maven extends Ant to let you download dependencies
-
- * Maven is a set of reusable Ant scriptlets
-
- []
-
- While Maven does these things, as you can read above in the "What is Maven?" section,
- these are not the only features Maven has, and its objectives are quite different.
-
- Maven does encourage best practices, but we realise that some projects may not fit with
- these ideals for historical reasons.  While Maven is designed to be flexible, to an extent, in these
- situations and to the needs of different projects, it can not cater to every situation without making
- compromises to the integrity of its objectives.
-
- If you decide to use Maven, and have an unusual build structure that you cannot reorganise, you may
- have to forgo some features or the use of Maven altogether.
+    The package is being constantly improved thanks to input from
+	users and code contributed by authors in the community.

Copied: logging/log4j/branches/v1_2-branch/src/site/apt/publications.apt (from r535385, logging/log4j/branches/v1_2-branch/src/site/apt/books.apt)
URL: http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/src/site/apt/publications.apt?view=diff&rev=537211&p1=logging/log4j/branches/v1_2-branch/src/site/apt/books.apt&r1=535385&p2=logging/log4j/branches/v1_2-branch/src/site/apt/publications.apt&r2=537211
==============================================================================
--- logging/log4j/branches/v1_2-branch/src/site/apt/books.apt (original)
+++ logging/log4j/branches/v1_2-branch/src/site/apt/publications.apt Fri May 11 08:36:55 2007
@@ -1,61 +1,83 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one or more
+~~ contributor license agreements.  See the NOTICE file distributed with
+~~ this work for additional information regarding copyright ownership.
+~~ The ASF licenses this file to You under the Apache License, Version 2.0
+~~ (the "License"); you may not use this file except in compliance with
+~~ the License.  You may obtain a copy of the License at
+~~
+~~      http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing, software
+~~ distributed under the License is distributed on an "AS IS" BASIS,
+~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~~ See the License for the specific language governing permissions and
+~~ limitations under the License.
  ------
- Maven Features
+ log4j 1.2 Publications
  ------
- Jason van Zyl
+ Curt Arnold
  ------
- 12 October 2005
+ 8 May 2007
  ------
 
-Feature Summary
 
- The following are the key features of Maven in a nutshell:
+Books
 
- * Simple project setup that follows best practices - get a new project or module started in seconds
- 
- * Consistent usage across all projects means no ramp up time for new developers coming onto a project
-
- * Superior dependency management including automatic updating, dependency closures (also known as transitive dependencies)
-
- * Able to easily work with multiple projects at the same time
- 
- * A large and growing repository of libraries and metadata to use out of the box, and arrangements in place with the largest Open Source projects for
-   real-time availability of their latest releases
- 
- * Extensible, with the ability to easily write plugins in Java or scripting languages
-
- * Instant access to new features with little or no extra configuration
- 
- * Ant tasks for dependency management and deployment outside of Maven
-
- * Model based builds:
-   Maven is able to build any number of projects into predefined output types
-   such as a JAR, WAR, or distribution based on metadata about the project, without
-   the need to do any scripting in most cases.
-
- * Coherent site of project information:
-   Using the same metadata as for the build process, Maven is able to generate a
-   web site or PDF including any documentation you care to add, and adds to that
-   standard reports about the state of development of the project.
-   Examples of this information can be seen at the bottom of the left-hand navigation of
-   this site under the "Project Information" and "Project Reports" submenus.
-
- * Release management and distribution publication:
-   Without much additional configuration, Maven will integrate with your source control
-   system such as CVS and manage the release of a project based on a certain tag.
-   It can also publish this to a distribution location for use by other projects.
-   Maven is able to publish individual outputs such as a JAR, an archive including other
-   dependencies and documentation, or as a source distribution.
-
- * Dependency management:
-   Maven encourages the use of a central repository of JARs and other dependencies. Maven
-   comes with a mechanism that your project's clients can use to
-   download any JARs required for building your project from a
-   central JAR repository much like Perl's CPAN. This allows users
-   of Maven to reuse JARs across projects and encourages communication
-   between projects to ensure that backward compatibility issues are
-   dealt with. We are collaborating with the folks at {{{http://www.ibiblio.org}Ibiblio}} who have graciously
-   allowed the central repository to live on their servers.
+ * Ceki G\xFClc\xFC.  2004.  The complete log4j manual.  QoS.ch.  {{{http://www.qos.ch/shop/products/eclm/}http://www.qos.ch/shop/products/eclm/}}.
+	
+ * Samudra Gupta.  2007.  Pro Apache log4j, Second Edition.  APress.
+	
+Articles:
+
+ * Vipan Singla.  Don't Use System.out.println! Use Log4j.  
+		   {{{http://www.vipan.com/htdocs/log4jhelp.html}http://www.vipan.com/htdocs/log4jhelp.html}}.
+        
+ * Vikran Goyal.  Build Flexible Logs With log4j.
+		   {{{http://www.onjava.com/pub/a/onjava/2002/08/07/log4j.html}http://www.onjava.com/pub/a/onjava/2002/08/07/log4j.html}}.
+        
+ * Ashley J.S.  Mills.  Log4J.  
+		   {{{http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/log4j/log4j.html}http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/log4j/log4j.html}}.
+        
+ * Kevin Brown.  Add logging to your Java Applications.
+	       {{{http://www.builder.com.com/article.jhtml?id=u00820020124kev01.htm}
+		   http://www.builder.com.com/article.jhtml?id=u00820020124kev01.htm}}
+        
+ * Kevin Brown.   How does the Java logging API stack up against log4j?
+	      {{{http://www.builder.com.com/article.jhtml?id=u00220020724kev01.htm}
+	       http://www.builder.com.com/article.jhtml?id=u00220020724kev01.htm}}.
+
+ * Michael Canzoneri.  Log4J FAQ.  {{{http://www.jguru.com/faq/Log4j}http://www.jguru.com/faq/Log4j}}.
+
+ * Ceki G\xFClc\xFC.  Think Again.  
+		   {{{http://www.qos.ch/logging/thinkAgain.html}http://www.qos.ch/logging/thinkAgain.html}}.
+
+ * Ceki G\xFClc\xFC.  Supporting the log4j RepositorySelector. 
+             {{{http://www.qos.ch/logging/sc.html}http://www.qos.ch/logging/sc.html}}.
+
+ * Ceki G\xFClc\xFC.  Log4j delivers control over logging. 
+             {{{http://www.javaworld.com/jw-11-2000/jw-1122-log4j.html}http://www.javaworld.com/jw-11-2000/jw-1122-log4j.html}}.
+			 
+ * Vikram Goyal.  Understanding Classloaders: log4j in a J2EE Environment.
+		    {{{http://www.onjava.com/pub/a/onjava/2003/04/02/log4j_ejb.html}http://www.onjava.com/pub/a/onjava/2003/04/02/log4j_ejb.html}}.
+
+ * Ruth Zamorano and Rafeal Luque.  Instant logging: Harness the power of log4j with Jabber.
+		   {{{http://www-106.ibm.com/developerworks/java/library/j-instlog/}http://www-106.ibm.com/developerworks/java/library/j-instlog/}}.
+
+ * Matthew Litkey, Jay Galvin, and Marina Sum.  
+		  Developer Tip: Adding the log4j API to Applications on Sun Java System Application Server 7
+           {{{http://developers.sun.com/prodtech/appserver/reference/techart/log4j.html}http://developers.sun.com/prodtech/appserver/reference/techart/log4j.html}}.
+		   
+ * Sean C. Sullivan.  Reporting Application Errors by Email.
+         {{{http://www.onjava.com/pub/a/onjava/2004/09/29/smtp-logging.html}http://www.onjava.com/pub/a/onjava/2004/09/29/smtp-logging.html}}.
+
+
+Presentations:
 
- []
+       *  John Munsch.  Log4J In 30 Minutes Or Less.
+			{{{http://www.johnmunsch.com/projects/Presentations/}http://www.johnmunsch.com/projects/Presentations/}}.
 
-~~ this needs to be greatly expanded and is too detailed here ... jvz
+       *  Ceki G\xFClc\xFC.  Log4j, a logging package for the Java language.
+         {{{http://www.qos.ch/ac2001/F11-10.html}http://www.qos.ch/ac2001/F11-10.html}}.
+
+       *  Brent Twenter.  Log4j.  {{{http://www.ociweb.com/javasig/knowledgebase/January2001/Log4J.ppt}http://www.ociweb.com/javasig/knowledgebase/January2001/Log4J.ppt}}.         
+ 
\ No newline at end of file

Modified: logging/log4j/branches/v1_2-branch/src/site/apt/roadmap.apt
URL: http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/src/site/apt/roadmap.apt?view=diff&rev=537211&r1=537210&r2=537211
==============================================================================
--- logging/log4j/branches/v1_2-branch/src/site/apt/roadmap.apt (original)
+++ logging/log4j/branches/v1_2-branch/src/site/apt/roadmap.apt Fri May 11 08:36:55 2007
@@ -1,61 +1,28 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one or more
+~~ contributor license agreements.  See the NOTICE file distributed with
+~~ this work for additional information regarding copyright ownership.
+~~ The ASF licenses this file to You under the Apache License, Version 2.0
+~~ (the "License"); you may not use this file except in compliance with
+~~ the License.  You may obtain a copy of the License at
+~~
+~~      http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing, software
+~~ distributed under the License is distributed on an "AS IS" BASIS,
+~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~~ See the License for the specific language governing permissions and
+~~ limitations under the License.
  ------
- Maven Features
+ log4j 1.2 Roadmap
  ------
- Jason van Zyl
+ Curt Arnold
  ------
- 12 October 2005
+ 8 May 2007
  ------
 
-Feature Summary
+log4j 1.2 Roadmap
 
- The following are the key features of Maven in a nutshell:
-
- * Simple project setup that follows best practices - get a new project or module started in seconds
- 
- * Consistent usage across all projects means no ramp up time for new developers coming onto a project
-
- * Superior dependency management including automatic updating, dependency closures (also known as transitive dependencies)
-
- * Able to easily work with multiple projects at the same time
- 
- * A large and growing repository of libraries and metadata to use out of the box, and arrangements in place with the largest Open Source projects for
-   real-time availability of their latest releases
- 
- * Extensible, with the ability to easily write plugins in Java or scripting languages
-
- * Instant access to new features with little or no extra configuration
- 
- * Ant tasks for dependency management and deployment outside of Maven
-
- * Model based builds:
-   Maven is able to build any number of projects into predefined output types
-   such as a JAR, WAR, or distribution based on metadata about the project, without
-   the need to do any scripting in most cases.
-
- * Coherent site of project information:
-   Using the same metadata as for the build process, Maven is able to generate a
-   web site or PDF including any documentation you care to add, and adds to that
-   standard reports about the state of development of the project.
-   Examples of this information can be seen at the bottom of the left-hand navigation of
-   this site under the "Project Information" and "Project Reports" submenus.
-
- * Release management and distribution publication:
-   Without much additional configuration, Maven will integrate with your source control
-   system such as CVS and manage the release of a project based on a certain tag.
-   It can also publish this to a distribution location for use by other projects.
-   Maven is able to publish individual outputs such as a JAR, an archive including other
-   dependencies and documentation, or as a source distribution.
-
- * Dependency management:
-   Maven encourages the use of a central repository of JARs and other dependencies. Maven
-   comes with a mechanism that your project's clients can use to
-   download any JARs required for building your project from a
-   central JAR repository much like Perl's CPAN. This allows users
-   of Maven to reuse JARs across projects and encourages communication
-   between projects to ensure that backward compatibility issues are
-   dealt with. We are collaborating with the folks at {{{http://www.ibiblio.org}Ibiblio}} who have graciously
-   allowed the central repository to live on their servers.
-
- []
-
-~~ this needs to be greatly expanded and is too detailed here ... jvz
+  log4j 1.2 is mature and future development on the log4j 1.2 branch
+  is expected to be limited to bug fixes and minor enhancements.
+  Any major new features for log4j 1.2 are likely to be developed
+  as companion products for log4j 1.2.

Modified: logging/log4j/branches/v1_2-branch/src/site/fml/faq.fml
URL: http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/src/site/fml/faq.fml?view=diff&rev=537211&r1=537210&r2=537211
==============================================================================
--- logging/log4j/branches/v1_2-branch/src/site/fml/faq.fml (original)
+++ logging/log4j/branches/v1_2-branch/src/site/fml/faq.fml Fri May 11 08:36:55 2007
@@ -18,20 +18,764 @@
 -->
 <faqs title="Frequently Asked Technical Questions">
   <part id="faq">
-    <faq id="scope-provided">
-      <question>How do I prevent including JARs in WEB-INF/lib? I need a "compile only" scope!</question>
+
+   <faq id="1.1">
+       <question>What is log4j?</question>
+       <answer>	<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>
+</answer>
+      </faq>
+
+
+      <faq id="1.2"><question>Is log4j a reliable logging system?</question>
+      <answer><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></answer></faq>
+
+    <faq id="1.3"><question>What are the prerequisites for log4j?</question>
       <answer>
+	  <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>
+
+	  <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>
+
+	  <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>
+
+	  <p>The <code>org.apache.log4j.net.JMSAppender</code>
+	  requires the presence of the JMS API as well as JNDI.
+	  </p>
+
+	  <p>log4j test code relies on the <a href="http://www.junit.org">JUnit</a> testing framework.
+	  </p>
+             </answer></faq>
+
+      <faq id="1.4"><question>What are the features of log4j?</question>
+      <answer>
+	  <p>log4j is optimized for speed.</p>
+
+	  <p>log4j is based on a named logger hierarchy.</p>
+
+	  <p>log4j is fail-stop. However, altough it certainly
+	  strives to ensure delivery, log4j does not guarantee that
+	  each log statement will be delivered to its destination.
+	  </p>
+
+	  <p>log4j is thread-safe.</p>
+
+	  <p>log4j is not restricted to a predefined set of
+	  facilities.</p>
+
+	  <p>Logging behavior can be set at runtime using a
+	  configuration file. Configuration files can be property
+	  files or in XML format.  </p>
+
+	  <p>log4j is designed to handle Java Exceptions from the
+	  start.</p>
+
+	  <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>
+
+	  <p>log4j uses 5 levels, namely DEBUG, INFO, WARN, ERROR and
+	  FATAL.
+	  </p>
+
+	  <p>The format of the log output can be easily changed by
+	  extending the <code>Layout</code>
+          class.  </p>
+
+	  <p>The target of the log output as well as the writing
+	  strategy can be altered by implementations of the
+	  <code>Appender</code> interface.  </p>
+
+	  <p>log4j supports multiple output appenders per logger.
+	  </p>
+
+	  <p>log4j supports internationalization.</p>
+             </answer></faq>
+
+      <faq id="1.5"><question>Is there example code for using log4j?</question>
+      <answer>
+	<p>See the <code>examples/</code> directory.</p>
+      </answer>
+      </faq>
+
+      <faq id="1.6">
+            <question>What documentation should I read to learn more about
+      log4j?</question>
+	<answer><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/log4j/log4j-Manual.jsp">The complete
+	log4j manual</a> which is much more detailed and up to
+	date. Both documents were written by Ceki G&#xfc;lc&#xfc;.
+	</p></answer>
+          </faq>
+
+      <faq id="1.7"><question>Is log4j thread-safe?</question>
+      <answer>
+	<p>Yes, log4j is thread-safe. Log4j components are designed to
+	be used in heavily multithreaded systems.</p>
+
+      </answer></faq>
+
+      <faq id="1.8"><question>What does log output look like?</question>
+      <answer>
+ 	<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 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.
+276 [main] DEBUG SortAlgo.SWAP i=1 j=0 - Swapping intArray[0] = 1 and intArray[1] = 0
+290 [main] DEBUG SortAlgo.OUTER i=0 - Outer loop.
+304 [main] INFO  SortAlgo.DUMP - Dump of interger array:
+317 [main] INFO  SortAlgo.DUMP - Element [0] = 0
+331 [main] INFO  SortAlgo.DUMP - Element [1] = 1
+343 [main] INFO  examples.Sort - The next log statement should be an error message.
+346 [main] ERROR SortAlgo.DUMP - Tried to dump an uninitialized array.
+        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.
+	</p>
+          </answer></faq>
+
+    <faq id="1.9"><question>Why should I use log4j when JDK 1.4 already ships with a
+      logging API?</question>
+        <answer>
+
         <p>
-          The scope you should use for this is
-          <code>provided</code>. This indicates to Maven that the dependency will be
-          provided at run time by its container or the JDK, for example.
+        Although both APIs are conceptually similar, the log4j API is
+        significantly more flexible and offers many more features, too
+        numerous to be listed here. You will discover that the
+        additional features and flexibility turn out to be
+        indispensable in the context of a mission-critical
+        application.
+        </p>
+
+        <p>The open and collaborative way in which log4j is developped
+        ensures that it continues to preserve and even widen its
+        competitive edge. At some point, input from bright developers
+        from all over the world is bound to make a difference.
         </p>
+        </answer>
+        </faq>
+
+
+      <faq id="2.1"><question>What are <em>Loggers</em>?</question>
+      <answer>
+
+	<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>
+          </answer></faq>
+
+<faq id="2.2"><question>How can I change log behavior at runtime?</question>
+      <answer>
+	<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>
+
+             </answer></faq>
+
+      <faq id="2.3"><question>What is the fastest way of (not) logging?</question>
+      <answer>
+	<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</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.
+	</p>
+</answer></faq>
+
+      <faq id="2.4"><question>Are there any suggested ways for naming loggers?</question>
+      <answer>
+	<p>Yes, there are.</p>
+
+	<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>
+             </answer></faq>
+
+      <faq id="2.5"><question>How do I get the fully-qualified name of a class in a static block?</question>
+      <answer>
+	<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>
+
+	<pre class="source">
+package a.b.c;
+
+public class Foo {
+  final static Logger logger = Logger.getLogger(Foo.class);
+  ... other code
+
+}
+	</pre>
+             </answer></faq>
+
+      <faq id="2.6"><question>Can the log output format be customized? </question>
+      <answer>
+ 	<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>
+</answer></faq>
+
+      <faq id="2.7"><question>What are the configurable options for <code>FooBarAppender</code>?</question>
+      <answer>
+	<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="apidocs\org\apache\log4j\RollingFileAppender.html"><code>RollingFileAppender</code></a>
+	the <a href="apidocs/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>
+    </answer></faq>
+
+             <faq id="2.8"><question>What is the recommended way of migrating from
+      java.util.logging to log4j?</question>
+        <answer>
+
+	<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>
+    </answer></faq>
+
+             <faq id="2.9"><question>Is it possible to direct log output to
+      different appenders by level? </question><answer>
+	<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="apidocs/org/apache/log4j/varia/LevelMatchFilter.html">LevelMatchFilter</a>
+	to any appender to filter out logging events by exact level match.
+	</p>
+    </answer></faq>
+
+
+             <faq id="2.10"><question>What does the Windows NT Event Viewer complain about
+      missing descriptions for my event messages when I use the
+      <code>NTEventLogAppender</code>?</question>
+
+      <answer>
+    <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>
+      </answer></faq>
+
+             <faq id="2.11"><question>Why can't I map my logger names to the loggers that
+      appear in the NT Event Log when I use the
+      NTEventLogAppender?</question>
+
+    <answer>
+	<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>
+    </answer></faq>
+
+    <faq id="2.12"><question>Are there suggested approaches for logging in JSP pages?</question>
+    <answer>
         <p>
-          Dependencies with this scope will not be passed on transitively, nor will they be bundled in an package such
-          as a WAR, or included in the runtime classpath.
+        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>
-      </answer>
+        <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>
+    </answer>
     </faq>
 
+             <faq id="3.1"><question>Can the outputs of multiple client request go to
+      different log files?</question>
+                 <answer>
+	<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>
+    </answer></faq>
+
+
+    <faq id="3.2"><question>Logger instances seem to be create only. Why isn't
+      there a method to remove logger instances?</question>
+     <answer>
+	<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></answer></faq>
+
+    <faq id="3.3"><question>How do I get multiple process to log to the same file?</question>
+      <answer>
+	<p>You may have each process log to a
+	<a href="apidocs/org/apache/log4j/net/SocketAppender.html"><code>SocketAppender</code></a>.
+	The receiving
+	<a href="apidocs/org/apache/log4j/net/SocketServer.html"><code>SocketServer</code></a>
+	(or
+	<a href="apidocs/org/apache/log4j/net/SimpleSocketServer.html"><code>SimpleSocketServer</code></a>)
+	can receive all the events and send them to a single
+	log file.
+	</p>
+     </answer></faq>
+
+             <faq id="3.4"><question>How about the timesamps of events generated by multiple
+      processes across multiple hosts (possibly across multiple
+      timezones)?</question>
+                 <answer>
+	<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>
+    </answer></faq>
+
+             <faq id="3.5"><question>Why can't log4j find my properties file in a J2EE or WAR
+      application?</question><answer>
+	<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></answer></faq>
+
+
+             <faq id="3.6"><question>Is there a way to get log4j to automatically reload a
+      configuration file if it changes?</question><answer>
+
+	<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></answer></faq>
+
+
+        <faq id="4.1"><question>Why should I donate my extensions to log4j back to the
+      project?</question><answer>
+	<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></answer></faq>
+
+    <faq id="4.2"><question>What should I keep in mind when contributing code?</question>
+      <answer>
+	<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>
+      </answer></faq>
+
+
+    <faq id="duplicate-messages">
+      <question>Why am I getting multiple copies of messages in my log file?</question>
+      <answer>
+	    <p>There are several reasons this can occur:
+		<ul>
+			<li>Repeated configuration of log4j:  By default, each call to 
+			PropertyConfigurator.configure or DOMConfigurator.configure is
+			culmulative.  If your configuration file defines a file appender,
+			calling PropertyConfigurator.configure three times will create
+			three distinct instances and connect each of them to the specified logger.</li>
+			<li>Attaching the same appender to multiple loggers: if an appender is
+			attached to the root logger and child logger, then any message
+			sent to the child logger will go to the appender twice (unless 
+			additivity is set to false).</li>
+		</ul></p>
+	  </answer>
+    </faq>
+      <faq id="custom-level">
+        <question>How do I add a custom level?</question>
+        <answer>
+          <p>It is possible, but rarely appropriate.  The
+          request is commonly for a level named something like "audit"
+          that doesn't obviously fit in the progression "trace", "debug",
+          "info", "warn", "error" and "fatal".  In that case, the request
+          for a level is really a request for a mechanism to specify
+          a different audience.  The appropriate mechanism is to use a distinct
+          logger name (or tree) for "audit" related messages.</p>
+        </answer>
+      </faq>
   </part>
 </faqs>

Modified: logging/log4j/branches/v1_2-branch/src/site/site.xml
URL: http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/src/site/site.xml?view=diff&rev=537211&r1=537210&r2=537211
==============================================================================
--- logging/log4j/branches/v1_2-branch/src/site/site.xml (original)
+++ logging/log4j/branches/v1_2-branch/src/site/site.xml Fri May 11 08:36:55 2007
@@ -19,7 +19,7 @@
   <bannerLeft>
     <name>Apache log4j 1.2</name>
     <src>images/ls-logo.jpg</src>
-    <href>http://logging.apache.org/log4j/1.2</href>
+    <href>http://logging.apache.org/test/log4j/1.2</href>
   </bannerLeft>
   <bannerRight>
     <src>images/logo.jpg</src>
@@ -27,9 +27,9 @@
   <body>
     <breadcrumbs>
       <item name="Apache" href="http://www.apache.org/"/>
-      <item name="Logging Services" href="http://logging.apache.org/"/>
-      <item name="log4j" href="http://logging.apache.org/log4j/"/>
-      <item name="1.2" href="http://logging.apache.org/log4j/1.2/"/>
+      <item name="Logging Services" href="http://logging.apache.org/test/"/>
+      <item name="log4j" href="http://logging.apache.org/test/log4j/"/>
+      <item name="1.2" href="http://logging.apache.org/test/log4j/1.2/"/>
     </breadcrumbs>
   
 	<menu name="Get log4j 1.2">
@@ -59,13 +59,13 @@
 	<menu name="Documentation">
 		<item name="Introduction" href="/manual.html"/>
 		<item name="JavaDoc" href="/apidocs/index.html"/>
-		<item name="Books" href="/books.html"/>
+		<item name="Publications" href="/publications.html"/>
 	</menu>
 	
 	<menu name="Resources">
-		<item name="Sandbox" href="http://logging.apache.org/sandbox"/>
-		<item name="Catalog" href="http://logging.apache.org/catalog.html"/>
-		<item name="Wiki" href="http://wiki.apache.org/logging/log4j"/>
+		<item name="Sandbox" href="http://logging.apache.org/test/sandbox"/>
+		<item name="Catalog" href="http://logging.apache.org/test/catalog.html"/>
+		<item name="Wiki" href="http://wiki.apache.org/logging-log4j"/>
 	</menu>
   </body>
 </project>



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