You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4php-dev@logging.apache.org by ih...@apache.org on 2011/01/08 15:28:57 UTC

svn commit: r1056712 [2/2] - in /logging/log4php/trunk/src/site: ./ apt/ apt/docs/ apt/docs/appender/

Modified: logging/log4php/trunk/src/site/apt/docs/renderer.apt
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/apt/docs/renderer.apt?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/apt/docs/renderer.apt (original)
+++ logging/log4php/trunk/src/site/apt/docs/renderer.apt Sat Jan  8 14:28:56 2011
@@ -13,50 +13,99 @@
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
  ------
- Apache log4php Renderer
+Renderers
  ------
  ------
  ------
 
-Apache log4php Renderer
-
-  log4php can not only log string messages but also objects which will be converted
-  to strings using either the default renderer or a customized render class. 
-
-  Example:
-
-%{snippet|id=doxia|file=src/examples/php/renderer_map.php}
-
-%{snippet|id=doxia|file=src/examples/resources/renderer_map.properties}
-
-  Will output the following (notice how $person shows up in the output):
+Renderers
 
+  log4php can log more than just string messages. If you try to log an object it will be converted to a string and logged. The component which converts Objects to strings in log4php is called a <<renderer>>.
+  
+* Default renderer  
+  
+  For example, let's say that your application uses a Person object, like this one:
+  
 +--
-  DEBUG - Now comes the current MyClass object:
-  DEBUG - Doe, John
+class Person {
+    public $firstName;
+    public $lastName;    
+    public $age;
+}
 +--
-
-  or the following if the default renderer were used:
+  
+  If you try logging it:
   
 +--
-  DEBUG - Now comes the current MyClass object:
-  DEBUG - Person::__set_state(array(
-    'firstName' => 'John',
-    'lastName' => 'Doe',
-  ))
+$person = new Person();
+$person->firstName = 'John';
+$person->lastName = 'Doe';
+$person->age = 37;
+
+$logger = Logger::getLogger('main');
+$logger->info("Here comes the person:");
+$logger->info($person);
 +--
+  
+  log4php will render it using the default renderer and you will end up with something like:
 
-  Object rendering follows the class hierarchy. For example, assuming oranges are fruits,
-  if you register an FruitRenderer, all fruits including oranges will be rendered
-  by the FruitRenderer, unless of course you registered an orange specific OrangeRenderer.
-
-  Object renderers have to implement the LoggerRendererObject interface.
++--
+INFO - Here comes the person:
+INFO - Person::__set_state(array(
+   'firstName' => 'John',
+   'lastName' => 'Doe',
+   'age' => 37,
+))
++--
   
-  The XML configuration would look like this:
+* Creating a custom renderer
 
+  In order to make log4php render our Person object in a more readable format, we need to create a custom renderer class which will convert Person objects to a string suitable for logging. 
+  
+   Let's call our renderer class PersonRenderer.
+  
++-- 
+/** All object renderers must implement the LoggerRendererObject interface. */
+class PersonRenderer implements LoggerRendererObject {
+    public function render($person) {
+        return "{$person->firstName} {$person->lastName} ({$person->age})";
+    }
+}
++--
+  
+  Now we must tell log4php to use PersonRenderer for rendering Person objects. This is done in the configuration file.
+  
+  XML configuration:
+  
 +--
 <log4php:configuration xmlns:log4php="http://logging.apache.org/log4php/">
 	<renderer renderedClass="Person" renderingClass="PersonRenderer" />
-    <appender threshold="WARN" name="default" class="LoggerAppenderEcho">
-    ...
+    <appender name="defualt" class="LoggerAppenderEcho" />
+    <root>
+        <appender_ref ref="defualt" />
+    </root>
+</log4php:configuration>
++--
+  
+  Equivalent ini file configuration:
+  
++--
+log4php.renderer.Person = PersonRenderer
+log4php.appender.default = LoggerAppenderEcho
+log4php.rootLogger = DEBUG, default
 +--
+
+  If we now run the same code as above, we will get the following output:
+  
++--
+INFO - Here comes the person:
+INFO - John Doe (37)
++--
+  
+  Which is much more readable than the default rendering.
+  
+* Class hierarchy
+  
+  Object rendering follows the class hierarchy. 
+  
+  For example, if there is a class named Fruit, and classes Orange, Lemon and Apple all extend Fruit. When you register FruitRenderer as renderer for the Fruit class, all subclasses of Fruit will also be rendered by FruitRenderer. Of course, it is possible to override this by registering OrangeRenderer as renderer for the Orange class.

Modified: logging/log4php/trunk/src/site/apt/download.apt
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/apt/download.apt?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/apt/download.apt (original)
+++ logging/log4php/trunk/src/site/apt/download.apt Sat Jan  8 14:28:56 2011
@@ -13,12 +13,12 @@
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
  ------
-Download apache-log4php
+Download
  ------
  ------
  ------
 
-Download apache-log4php
+Download log4php
 
   Apache log4php is distributed under the {{{http://www.apache.org/licenses/LICENSE-2.0.html} Apache License, version 2.0}}.
 
@@ -33,7 +33,7 @@ Download apache-log4php
   * {{{http://www.apache.org/dyn/closer.cgi/logging/log4php/2.0.0/apache-log4php-2.0.0-incubating-src.zip}apache-log4php-2.0.0-incubating-src.zip}} {{{http://www.apache.org/dist/logging/log4php/2.0.0/apache-log4php-2.0.0-incubating-src.zip.md5}MD5}} {{{http://www.apache.org/dist/logging/log4php/2.0.0/apache-log4php-2.0.0-incubating-src.zip.asc}ASC}}
 
 
-  The following artifact is prepared for a pear channel and is recommended to users who want to make Log4PHP available in their own channels:
+  The following artifact is prepared for a pear channel and is recommended to users who want to make log4php available in their own channels:
   
   * {{{http://www.apache.org/dyn/closer.cgi/logging/log4php/2.0.0/Apache_log4php-2.0.0-incubating-pear.tgz}Apache_log4php-2.0.0-incubating-pear.tgz}} {{{http://www.apache.org/dist/logging/log4php/2.0.0/Apache_log4php-2.0.0-incubating-pear.tgz.md5}MD5}} {{{http://www.apache.org/dist/logging/log4php/2.0.0/Apache_log4php-2.0.0-incubating-pear.tgz.asc}ASC}}
   

Modified: logging/log4php/trunk/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/apt/index.apt?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/apt/index.apt (original)
+++ logging/log4php/trunk/src/site/apt/index.apt Sat Jan  8 14:28:56 2011
@@ -13,11 +13,13 @@
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
  ------
- Apache log4php
+What is it?
  ------
  ------
  ------
 
+What is Apache log4php?
+ 
    Apache log4php is a logging framework for PHP at the Apache Software Foundation (ASF), 
    sponsored by the Apache Logging Services project. 
   

Modified: logging/log4php/trunk/src/site/apt/install.apt
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/apt/install.apt?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/apt/install.apt (original)
+++ logging/log4php/trunk/src/site/apt/install.apt Sat Jan  8 14:28:56 2011
@@ -13,7 +13,7 @@
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
  ------
- Apache log4php Installation
+Installation
  ------
  ------
  ------

Modified: logging/log4php/trunk/src/site/apt/quickstart.apt
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/apt/quickstart.apt?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/apt/quickstart.apt (original)
+++ logging/log4php/trunk/src/site/apt/quickstart.apt Sat Jan  8 14:28:56 2011
@@ -13,105 +13,178 @@
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
  ------
- Apache log4php Quickstart
+Quickstart
  ------
  ------
  ------
 
-Apache log4php Quickstart
+Quickstart
 
   First, please {{{install.html}install log4php}}.
 
-
-* Overview
-
-  The log4php framework is quite flexible, e.g. you can have a all log messages of
-  a certain importance go to one big logfile, all warnings from the database
-  classes send via e-mail and all everything, even debug output from some other
-  class going to a separate file. The configuration can be done using a standard
-  property file (.ini), an XML file or an PHP array. 
- 
-  Before we start explaining how to configure it, we first explain some terms
-  that are used all over the documentation:
-  
-  * logger - an object of the Logger class that's used like "$logger->info("foo");". 
-    Each logger has a name like "main" or "myclass".
-    
-  * hierarchy - logger names can be separated by dots like "myclass" and "myclass.database"
-    to form some kind of hierarchy. Since log4php uses property inheritance, subpackages of
-    "myclass.database" could be configured differently from "myclass" while still inherit
-    their ancestors configuration options per default.
+  It would also be wise to read the {{{docs/introduction.html}introduction to log4php}} to familiarise yoursef with the basic concepts used throughout the documentation and examples.
   
-  * appender - defines if the output goes to a file, a database table, e-mail, syslog etc.
+* A trivial example
   
-  * layout - defines how the output looks like e.g. just "INFO: foo bar" or with timestamps, logger name, PID etc.
-
-** A trivial example
   You just want logging to stdout?
 
 +--
-  require_once('log4php/Logger.php');
-  
-  $logger = Logger::getLogger("main");
-  $logger->info("foo");
-  $logger->warn("bar");
+require_once('log4php/Logger.php');
+
+$logger = Logger::getLogger("main");
+$logger->info("foo");
+$logger->warn("bar");
 +--
 
  This gives:
 
 +--
-  Sun Jul 26 01:40:23 2009,021 [10093] INFO main - foo
-  Sun Jul 26 01:40:23 2009,030 [10093] WARN main - bar
+Sun Jul 26 01:40:23 2009,021 [10093] INFO main - foo
+Sun Jul 26 01:40:23 2009,030 [10093] WARN main - bar
 +--
 
-** A simple example
+* A simple example
 
-  Here is an advanced, yet still simple, log4php.properties configuration:
+  Wish to log all events to a file, but only those level is greater or equal to WARN?
+  
+  First, create a configuration file named log4php.xml containing:
 
 +--
-    log4php.appender.default = LoggerAppenderEcho
-    log4php.appender.default.layout = LoggerLayoutSimple
- 
-    log4php.rootLogger = WARN, default
+<?xml version="1.0" encoding="UTF-8"?>
+<log4php:configuration xmlns:log4php="http://logging.apache.org/log4php/">
+    <appender name="myAppender" class="LoggerAppenderFile">       <!-- 1 -->
+        <param name="file" value="myLog.log">                     <!-- 2 -->
+    </appender>
+    <root>
+        <level value="WARN" />                                    <!-- 3 -->
+        <appender_ref ref="myAppender" />                         <!-- 4 -->
+    </root>
+</log4php:configuration>
++--
+
+  This configuration file does the following:
+  
+  [[1]] Creates an appender called <myAppender> using appender class {{{docs/appender/appender.html#LoggerAppenderFile}LoggerAppenderFile}} which is used for logging to a file.
+
+  [[2]] Sets the <file> parameter, which is required for LoggerAppenderFile, to the path to the file in which events will be logged.
   
-    log4php.logger.mylogger = INFO, default
-    log4php.additivity.mylogger = "false"
+  [[3]] Configures the root {{{docs/loggers.html}logger}} at WARN {{{docs/introduction.html#Levels}level}}. Therefore, logging requests with the level lower than WARN will be ignored.
+
+  [[4]] Links <myAppender> with the root logger so that all events recieved by the root logger will be forwarded to <myAppender> and written into the log file.
+  
+  []
+
+  To try it out, run the following code:
+
 +--
+// Replace the path with where you installed log4php
+require_once('/path/to/log4php/Logger.php');
+
+// Tell log4php to use our configuration file.
+Logger::configure('log4php.xml');
 
-  This configures the so called root logger at WARN level with the default
-  appender. An additional Logger named "mylogger" is configured at INFO level.
-  If you would give one of your loggers a name which hasn't been defined, like
-  "main" in the below source, in your config file, the root logger is used.
-  Once you have created such a file, you need to define it's location by setting
-  a constant: log4php will look up the configuration file and prepare the
-  framework for logging.
+// Fetch a logger, it will inherit settings from the root logger
+$log = Logger::getLogger('myLogger');
 
+// Start logging
+$log->trace("My first message.");   // Not logged because TRACE < WARN
+$log->debug("My second message.");  // Not logged because DEBUG < WARN
+$log->info("My third message.");    // Not logged because INFO < WARN
+$log->warn("My fourth message.");   // Logged because WARN >= WARN
+$log->error("My fifth message.");   // Logged because ERROR >= WARN
+$log->fatal("My sixth message.");   // Logged because FATAL >= WARN
 +--
-  require_once('log4php/Logger.php');
-  Logger::configure('log4php.properties');
+
+  This will create a file named <<myLog.log>> containing the following:
+
++--
+WARN - My fourth message.
+ERROR - My fifth message.
+FATAL - My sixth message.
++--
+
+* An advanced example
+
+  Named loggers; layouts; best practices in object-oriented programming.
   
-  class MyClass {
-     private $logger;
-     
-     public function __construct() {
-         $this->logger = Logger::getLogger(__CLASS__);
-         $this->logger->debug('currently in constructor');
-     }
-  } 
+  Create the following configuration file:
+
++--
+<?xml version="1.0" encoding="UTF-8"?>
+<log4php:configuration xmlns:log4php="http://logging.apache.org/log4php/">
+    
+    <appender name="myConsoleAppender" class="LoggerAppenderConsole" />
+    
+    <appender name="myFileAppender" class="LoggerAppenderFile">
+		<layout class="LoggerLayoutTTCC" />
+        <param name="file" value="myLog.log" />
+    </appender>
+
+    <logger name="Foo">
+        <appender_ref ref="myFileAppender" />
+    </logger>
+    
+    <root>
+        <level value="DEBUG" />
+        <appender_ref ref="myConsoleAppender" />
+    </root>
+</log4php:configuration>
++--
+
+  Note that:
+  
+  * Two appenders are created. The first logs to the console, and the second to a file. The file appender uses a different layout, which will result in different formatting of the logging events.
+  
+  * The console appender is linked to the root logger.
+  
+  * The file appender is linked to the logger named <Foo>, however <Foo> will also inherit appenders from the root logger (the console appender in this case). In other words, logging events sent to a logger named <Foo> will be logged both to the console and the file.
+
+  []
   
-  $logger = Logger::getLogger('main');
-  $logger->info('below warn and thus not printed');
+  The code:
   
-  new MyClass();
 +--
- 
-   The output looks like this. It is very brief as we used SimpleLayout and hides
-   one message because the default treshhold is set to WARN:
-   
+require 'D:\Projects\apache\log4php\src\main\php\Logger.php';
+
+Logger::configure('D:\Projects\apache\_playground\log4php.xml');
+
+/**
+ * This is a classic pattern: using one logger object per class.
+ */
+class Foo
+{
+    /** Holds the Logger. */
+    private $log;
+
+    /** Logger is instantiated in the constructor. */
+    public function __construct()
+    {
+        // The __CLASS__ constant holds the class name, in our case "Foo".
+        // Therefore this creates a logger named "Foo" (which we configured in the config file)
+        $this->log = Logger::getLogger(__CLASS__);
+    }
+
+    /** Logger can be used from any member method. */
+    public function go()
+    {
+        $this->log->info("We have liftoff.");
+    }
+}
+
+$foo = new Foo();
+$foo->go();
++--
+
+  This produces the following output in the console:
+  
++--
+INFO - We have liftoff.
++-- 
+
+  And the following in the log file:
+  
 +--
-  DEBUG - currently in constructor
+01/06/11 18:43:39,545 [5428] INFO Foo - We have liftoff.
 +--
- 
-** Hints
 
-  * Since log4php makes use of date functions, it is recommended that you have set: date_default_timezone_set('Europe/Berlin'); or similar somewhere within your application.
+  Note the different layout, this is because LoggerLayoutTTCC was used as layout for the file appender.

Modified: logging/log4php/trunk/src/site/apt/roadmap.apt
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/apt/roadmap.apt?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/apt/roadmap.apt (original)
+++ logging/log4php/trunk/src/site/apt/roadmap.apt Sat Jan  8 14:28:56 2011
@@ -13,11 +13,9 @@
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
  ------
- apache-log4php Roadmap
+Roadmap
  ------
- Curt Arnold
  ------
- 4 June 2007
  ------
 
 Apache log4php Roadmap

Modified: logging/log4php/trunk/src/site/apt/showcase.apt
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/apt/showcase.apt?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/apt/showcase.apt (original)
+++ logging/log4php/trunk/src/site/apt/showcase.apt Sat Jan  8 14:28:56 2011
@@ -13,7 +13,7 @@
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
  ------
-Who uses Apache log4php?
+Who uses it?
  ------
  ------
  ------
@@ -21,7 +21,7 @@ Who uses Apache log4php?
 Who uses Apache log4php?
 
   This site shows some of the log4php users. If you think that you should be on this list, please
-  let us know. Send a message to the {{{http://incubator.apache.org/log4php/mail-lists.html}log4php user lists}}.
+  let us know. Send a message to the {{{mail-lists.html}log4php user lists}}.
   
   In alphabetic order:
   

Modified: logging/log4php/trunk/src/site/apt/upgrading.apt
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/apt/upgrading.apt?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/apt/upgrading.apt (original)
+++ logging/log4php/trunk/src/site/apt/upgrading.apt Sat Jan  8 14:28:56 2011
@@ -13,7 +13,7 @@
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
  ------
- Apache log4php Upgrading Instructions
+Upgrading
  ------
  ------
  ------

Modified: logging/log4php/trunk/src/site/apt/volunteering.apt
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/apt/volunteering.apt?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/apt/volunteering.apt (original)
+++ logging/log4php/trunk/src/site/apt/volunteering.apt Sat Jan  8 14:28:56 2011
@@ -13,19 +13,19 @@
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
  ------
- Apache log4php
+Volunteering
  ------
  ------
  ------
 
 On Volunteering
 
-  If you want to volunteer and help with developing Log4PHP, you are highly encouraged to read
+  If you want to volunteer and help with developing log4php, you are highly encouraged to read
   {{{http://www.apache.org/foundation/getinvolved.html}Apache getting involved}}. If you have
   questions on that document, we might be able to answer them on the developers mailinglist.
   
   Craig R. McClanahan posted an interesting mail to the Apache Commons mailinglist. I modified
-  the post to fit for Log4PHP:
+  the post to fit for log4php:
 
 
   The best way to contribute is to identify for yourself things that you

Modified: logging/log4php/trunk/src/site/site.xml
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/site.xml?rev=1056712&r1=1056711&r2=1056712&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/site.xml (original)
+++ logging/log4php/trunk/src/site/site.xml Sat Jan  8 14:28:56 2011
@@ -7,7 +7,7 @@
  (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
+	  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,
@@ -16,70 +16,72 @@
  limitations under the License.
 
 -->
-<project name="log4php" xmlns="http://maven.apache.org/DECORATION/1.0.0"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
-  <bannerLeft>
-    <name>Apache Logging Services Project</name>
-    <src>images/ls-logo.jpg</src>
-    <href>http://logging.apache.org/</href>
-  </bannerLeft>  
-  <body>
-        <breadcrumbs>
-          <item name="Apache" href="http://www.apache.org/"/>
-          <item name="Logging" href="http://logging.apache.org"/>
-          <item name="log4php" href="http://logging.apache.org/log4php"/>
-        </breadcrumbs>
-
-        <menu name="About log4php">
-           <item name="What is it?" href="/index.html"/>
-           <item name="Who uses it?" href="/showcase.html"/>
-        </menu>
+<project name="Apache log4php" xmlns="http://maven.apache.org/DECORATION/1.0.0"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
+	<bannerLeft>
+		<name>Apache Logging Services Project</name>
+		<src>images/ls-logo.jpg</src>
+		<href>http://logging.apache.org/</href>
+	</bannerLeft>  
+	<body>
+		<breadcrumbs>
+		  <item name="Apache" href="http://www.apache.org/"/>
+		  <item name="Logging" href="http://logging.apache.org"/>
+		  <item name="log4php" href="http://logging.apache.org/log4php"/>
+		</breadcrumbs>
+
+		<menu name="About log4php">
+		   <item name="What is it?" href="/index.html"/>
+		   <item name="Who uses it?" href="/showcase.html"/>
+		</menu>
   
-        <menu name="Get log4php">
-           <item name="Download" href="/download.html"/>
-           <item name="Install" href="/install.html"/>
-           <item name="Upgrading" href="/upgrading.html"/>
-        </menu>
+		<menu name="Get log4php">
+		   <item name="Download" href="/download.html"/>
+		   <item name="Install" href="/install.html"/>
+		   <item name="Upgrading" href="/upgrading.html"/>
+		</menu>
 
 		<menu name="User Documentation">
-            <item name="Quick start" href="/quickstart.html"/>
-            <item name="Manual" collapse="false" href="/docs/introduction.html">
-			    <item name="Introduction" href="/docs/introduction.html"/>
-			    <item name="Configuration" href="/docs/configuration.html"/>
-			    <item name="Appender" href="/docs/appenders.html"/>
-			    <item name="Layout" href="/docs/appender-layout.html"/>
-			    <item name="Threshold" href="/docs/appender-threshold.html"/>
-		  	    <item name="Filter" href="/docs/appender-filter.html"/>
-			    <item name="Renderer" href="/docs/renderer.html"/> 
-			    <item name="Performance" href="/docs/performance.html"/>
+			<item name="Quick start" href="/quickstart.html"/>
+			<item name="Manual" collapse="false" href="/docs/introduction.html">
+				<item name="Introduction" href="/docs/introduction.html"/>
+				<item name="Configuration" href="/docs/configuration.html"/>
+				<item name="Loggers" href="/docs/loggers.html"/>
+				<item name="Appenders" collapse="false" href="/docs/appender/appender.html">
+					<item name="Layouts" href="/docs/appender/layout.html"/>
+					<item name="Threshold" href="/docs/appender/threshold.html"/>
+					<item name="Filters" href="/docs/appender/filter.html"/>
+				</item>
+				<item name="Renderer" href="/docs/renderer.html"/> 
+				<item name="Performance" href="/docs/performance.html"/>
 			</item>
-            <item name="PHPDoc" href="/apidocs/index.html"/>
-        </menu>
-        
-        <menu name="Community">
-            <item name="Mailing Lists" href="/mail-lists.html"/>
-            <item name="Issue Tracking" href="/issue-tracking.html"/>
-            <item name="Wiki" href="http://wiki.apache.org/logging/Log4PHP"/>
-            <item name="Blog" href="http://blogs.apache.org/logging/"/>
-        </menu>
-        
-        <menu name="Developers">
-            <item name="Volunteering" href="/volunteering.html"/>
-            <item name="Contributing Patches" href="/contributingpatches.html"/>            
-            <item name="Roadmap" href="/roadmap.html"/>
-            <item name="Code Coverage" href="/coverage-report/index.html"/>
-            <item name="Buildbot" href="http://ci.apache.org/projects/log4php"/>
-        </menu>
-        
-        <menu ref="reports"/>
-        
-        <menu name="Apache">
-        	<item name="Home" href="http://www.apache.org"/>	
-        	<item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html"/>
-        	<item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
-        	<item name="Conferences" href="http://www.apachecon.com"/>
-        </menu>
+			<item name="PHPDoc" href="/apidocs/index.html"/>
+		</menu>
+		
+		<menu name="Community">
+			<item name="Mailing Lists" href="/mail-lists.html"/>
+			<item name="Issue Tracking" href="/issue-tracking.html"/>
+			<item name="Wiki" href="http://wiki.apache.org/logging/Log4PHP"/>
+			<item name="Blog" href="http://blogs.apache.org/logging/"/>
+		</menu>
+		
+		<menu name="Developers">
+			<item name="Volunteering" href="/volunteering.html"/>
+			<item name="Contributing Patches" href="/contributingpatches.html"/>			
+			<item name="Roadmap" href="/roadmap.html"/>
+			<item name="Code Coverage" href="/coverage-report/index.html"/>
+			<item name="Buildbot" href="http://ci.apache.org/projects/log4php"/>
+		</menu>
+		
+		<menu ref="reports"/>
+		
+		<menu name="Apache">
+			<item name="Home" href="http://www.apache.org"/>	
+			<item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html"/>
+			<item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
+			<item name="Conferences" href="http://www.apachecon.com"/>
+		</menu>
 
   </body>
 </project>