<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at Apr 12, 2013 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>
        Apache log4net Manual: Configuration</title>
    <style type="text/css" media="all">
      @import url("../../css/maven-base.css");
      @import url("../../css/maven-theme.css");
      @import url("../../css/site.css");
    </style>
    <link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
      <meta name="author" content="Nicko Cadell" />
    <meta name="Date-Revision-yyyymmdd" content="20130412" />
    <meta http-equiv="Content-Language" content="en" />
        <meta name="keywords" content="log4net configuration, log4net" />
        </head>
  <body class="composite">
    <div id="banner">
                                      <a href="../../../" id="bannerLeft">
                                                <img src="../../images/ls-logo.jpg" alt="Apache Logging Services Project" />
                </a>
                    <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
        
                <div class="xleft">
        <span id="publishDate">Last Published: 2013-04-12</span>
                  &nbsp;| <span id="projectVersion">Version: 1.2.12-SNAPSHOT</span>
                          |                           <a href="http://www.apache.org/" class="externalLink" title="Apache">Apache</a>
        &gt;
                          <a href="../../../" title="Logging Services">Logging Services</a>
        &gt;
                          <a href="../.././" title="log4net">log4net</a>
        &gt;
    
        Apache log4net Manual: Configuration
              </div>
            <div class="xright">        
        
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
        
                                <h5>Apache log4net</h5>
                  <ul>
                  <li class="none">
                          <a href="../../index.html" title="About">About</a>
            </li>
                  <li class="none">
                          <a href="../../download_log4net.cgi" title="Download">Download</a>
            </li>
                  <li class="none">
                          <a href="../../release/release-notes.html" title="Release Notes">Release Notes</a>
            </li>
                  <li class="none">
                          <a href="../../license.html" title="License">License</a>
            </li>
          </ul>
                       <h5>Documentation</h5>
                  <ul>
                  <li class="none">
                          <a href="../../release/features.html" title="Features">Features</a>
            </li>
                  <li class="none">
                          <a href="../../release/framework-support.html" title="Supported Frameworks">Supported Frameworks</a>
            </li>
                  <li class="none">
                          <a href="../../release/example-apps.html" title="Example Apps">Example Apps</a>
            </li>
                  <li class="none">
                          <a href="../../release/config-examples.html" title="Config Examples">Config Examples</a>
            </li>
                  <li class="none">
                          <a href="../../release/building.html" title="Building">Building</a>
            </li>
                  <li class="none">
                          <a href="../../release/faq.html" title="FAQ">FAQ</a>
            </li>
                  <li class="none">
                          <a href="../../release/howto/index.html" title="How Tos">How Tos</a>
            </li>
                  <li class="none">
                          <a href="../../release/sdk/index.html" title="SDK Reference">SDK Reference</a>
            </li>
          </ul>
                       <h5>Manual</h5>
                  <ul>
                  <li class="none">
                          <a href="../../release/manual/introduction.html" title="Introduction">Introduction</a>
            </li>
                  <li class="none">
            <strong>Configuration</strong>
          </li>
                  <li class="none">
                          <a href="../../release/manual/contexts.html" title="Contexts">Contexts</a>
            </li>
                  <li class="none">
                          <a href="../../release/manual/plugins.html" title="Plugins">Plugins</a>
            </li>
                  <li class="none">
                          <a href="../../release/manual/repositories.html" title="Repositories">Repositories</a>
            </li>
                  <li class="none">
                          <a href="../../release/manual/internals.html" title="Internals">Internals</a>
            </li>
          </ul>
                       <h5>Community</h5>
                  <ul>
                  <li class="none">
                          <a href="../../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="../../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
            </li>
          </ul>
                       <h5>Development</h5>
                  <ul>
                  <li class="none">
                          <a href="../../source-repository.html" title="Repository">Repository</a>
            </li>
                  <li class="none">
                          <a href="../../integration.html" title="Continuous Integration">Continuous Integration</a>
            </li>
          </ul>
                       <h5>Project Documentation</h5>
                  <ul>
                                                                                                                                                                                                                                                        <li class="collapsed">
                          <a href="../../project-info.html" title="Project Information">Project Information</a>
                  </li>
                                                                    <li class="collapsed">
                          <a href="../../project-reports.html" title="Project Reports">Project Reports</a>
                  </li>
          </ul>
                       <h5>Apache</h5>
                  <ul>
                  <li class="none">
                          <a href="http://www.apache.org/" class="externalLink" title="Home">Home</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/licenses/" class="externalLink" title="License">License</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
            </li>
                  <li class="none">
                          <a href="http://www.apachecon.com" class="externalLink" title="Conferences">Conferences</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="../../images/logos/maven-feather.png" />
      </a>
                   
        
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <!-- 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. -->

    
        <a name="main"></a><div class="section"><h2 id="main">Apache log4net&#x2122; Manual - Configuration</h2>

            <a name="config"></a><div class="section"><h2 id="config">Configuration</h2>
                <p>
                    Inserting log requests into the application code requires a fair amount of 
                    planning and effort. Observation shows that approximately 4 percent of code is 
                    dedicated to logging. Consequently, even moderately sized applications will 
                    have thousands of logging statements embedded within their code. Given their 
                    number, it becomes imperative to manage these log statements without the need 
                    to modify them manually.
                </p>
                <p>
                    The log4net environment is fully configurable programmatically. However, it is 
                    far more flexible to configure log4net using configuration files. Currently, 
                    configuration files are written in XML.
                </p>
                <p>
                    Let us give a taste of how this is done with the help of an imaginary 
                    application
                    <span class="code">MyApp</span>
                    that uses log4net.
                </p>
                <div class="syntax"><div class="code"><pre>
using Com.Foo;

// Import log4net classes.
<b>using log4net;
using log4net.Config;</b>

public class MyApp 
{
    // Define a static logger variable so that it references the
    // Logger instance named &quot;MyApp&quot;.
    <b>private static readonly</b> ILog log = <b>LogManager.GetLogger(typeof(MyApp));</b>

    static void Main(string[] args) 
    {
        // Set up a simple configuration that logs on the console.
        <b>BasicConfigurator.Configure();</b>

        log.Info(&quot;Entering application.&quot;);
        Bar bar = new Bar();
        bar.DoIt();
        log.Info(&quot;Exiting application.&quot;);
    }
}</pre></div></div>
                <p>
                    <span class="code">MyApp</span>
                    begins by importing log4net related classes. It then defines a static logger 
                    variable with the name
                    <span class="code">MyApp</span>
                    which happens to be the fully qualified name of the class.
                </p>
                <p>
                    <span class="code">MyApp</span>
                    uses the following
                    <span class="code">Bar</span>
                    class:
                </p>
                <div class="syntax"><div class="code"><pre>
// Import log4net classes.
using log4net;

<b>namespace Com.Foo</b>
{
    public class Bar 
    {
        <b>private static readonly</b> ILog log = <b>LogManager.GetLogger(typeof(Bar));</b>

        public void DoIt()
        {
            log.Debug(&quot;Did it again!&quot;);
        }
    }
}</pre></div></div>
                <p>
                    The invocation of the
                    <span class="code">BasicConfigurator.Configure()</span>
                    method creates a rather simple log4net setup. This method is hardwired to add 
                    to the <i>root</i> logger a
                    <span class="code">ConsoleAppender</span>. The output will be formatted using a
                    <span class="code">PatternLayout</span>
                    set to the pattern
                    <span class="code">&quot;%-4timestamp [%thread] %-5level %logger %ndc - %message%newline&quot;</span>.
                </p>
                <p>
                    Note that by default, the <i>root</i> logger is assigned to
                    <span class="code">Level.DEBUG</span>.
                </p>
                <p>
                    The output of <span class="code">MyApp</span> is:
                </p>
                <div class="source"><pre>
0    [main] INFO  MyApp  - Entering application.
36   [main] DEBUG Com.Foo.Bar  - Did it again!
51   [main] INFO  MyApp  - Exiting application.</pre></div>
                <p>
                    As a side note, let me mention that in log4net child loggers link only to their 
                    existing ancestors. In particular, the logger named
                    <span class="code">Com.Foo.Bar</span>
                    is linked directly to the
                    <i>root</i>
                    logger, thereby circumventing the unused
                    <span class="code">Com</span>
                    or
                    <span class="code">Com.Foo</span>
                    loggers. This significantly increases performance and reduces log4net's memory 
                    footprint.
                </p>
                <p>
                    The
                    <span class="code">MyApp</span>
                    class configures log4net by invoking
                    <span class="code">BasicConfigurator.Configure()</span>
                    method. Other classes only need to import the
                    <span class="code">log4net</span>
                    namespace, retrieve the loggers they wish to use, and log away.
                </p>
                <p>
                    The previous example always outputs the same log information. Fortunately, it 
                    is easy to modify
                    <span class="code">MyApp</span>
                    so that the log output can be controlled at run-time. Here is a slightly 
                    modified version.
                </p>
                <div class="syntax"><div class="code"><pre>
using Com.Foo;

// Import log4net classes.
using log4net;
<b>using log4net.Config;</b>

public class MyApp 
{
    private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));

    static void Main(string[] args) 
    {
        // BasicConfigurator replaced with XmlConfigurator.
        <b>XmlConfigurator.Configure(new System.IO.FileInfo(args[0]));</b>

        log.Info(&quot;Entering application.&quot;);
        Bar bar = new Bar();
        bar.DoIt();
        log.Info(&quot;Exiting application.&quot;);
    }
}</pre></div></div>
                <p>
                    This version of
                    <span class="code">MyApp</span>
                    instructs the 
                    <span class="code">XmlConfigurator</span>
                    to parse a configuration file and set up logging accordingly. The path to the 
                    configuration file is specified on the command line.
                </p>
                <p>
                    Here is a sample configuration file that results in exactly same output as the 
                    previous
                    <span class="code">BasicConfigurator</span>
                    based example.
                </p>
                <div class="source"><pre>
&lt;log4net&gt;
    &lt;!-- A1 is set to be a ConsoleAppender --&gt;
    &lt;appender name=&quot;A1&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;

        &lt;!-- A1 uses PatternLayout --&gt;
        &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
            &lt;conversionPattern value=&quot;%-4timestamp [%thread] %-5level %logger %ndc - %message%newline&quot; /&gt;
        &lt;/layout&gt;
    &lt;/appender&gt;
    
    &lt;!-- Set root logger level to DEBUG and its only appender to A1 --&gt;
    &lt;root&gt;
        &lt;level value=&quot;DEBUG&quot; /&gt;
        &lt;appender-ref ref=&quot;A1&quot; /&gt;
    &lt;/root&gt;
&lt;/log4net&gt;</pre></div>
                <p>
                    Suppose we are no longer interested in seeing the output of any component 
                    belonging to the
                    <span class="code">Com.Foo</span>
                    package. The following configuration file shows one possible way of achieving 
                    this.
                </p>
                <div class="source"><pre>
&lt;log4net&gt;
    &lt;!-- A1 is set to be a ConsoleAppender --&gt;
    &lt;appender name=&quot;A1&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;

        &lt;!-- A1 uses PatternLayout --&gt;
        &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
            &lt;!-- Print the date in ISO 8601 format --&gt;
            &lt;conversionPattern value=&quot;%date [%thread] %-5level %logger %ndc - %message%newline&quot; /&gt;
        &lt;/layout&gt;
    &lt;/appender&gt;
    
    &lt;!-- Set root logger level to DEBUG and its only appender to A1 --&gt;
    &lt;root&gt;
        &lt;level value=&quot;DEBUG&quot; /&gt;
        &lt;appender-ref ref=&quot;A1&quot; /&gt;
    &lt;/root&gt;
    
    &lt;!-- Print only messages of level WARN or above in the package Com.Foo --&gt;
    &lt;logger name=&quot;Com.Foo&quot;&gt;
        &lt;level value=&quot;WARN&quot; /&gt;
    &lt;/logger&gt;
&lt;/log4net&gt;</pre></div>
                <p>
                    The output of
                    <span class="code">MyApp</span>
                    configured with this file is shown below.
                </p>
                <div class="source"><pre>
2000-09-07 14:07:41,508 [main] INFO  MyApp - Entering application.
2000-09-07 14:07:41,529 [main] INFO  MyApp - Exiting application.</pre></div>
                <p>
                    As the logger
                    <span class="code">Com.Foo.Bar</span>
                    does not have an assigned level, it inherits its level from
                    <span class="code">Com.Foo</span>, which was set to WARN in the configuration 
                    file. The log statement from the
                    <span class="code">Bar.DoIt</span>
                    method has the level DEBUG, lower than the logger level WARN. Consequently,
                    <span class="code">DoIt()</span>
                    method's log request is suppressed.
                </p>
                <p>
                    Here is another configuration file that uses multiple appenders.
                </p>
                <div class="source"><pre>
&lt;log4net&gt;
    &lt;appender name=&quot;Console&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;
        &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
            &lt;!-- Pattern to output the caller's file name and line number --&gt;
            &lt;conversionPattern value=&quot;%5level [%thread] (%file:%line) - %message%newline&quot; /&gt;
        &lt;/layout&gt;
    &lt;/appender&gt;
    
    &lt;appender name=&quot;RollingFile&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;
        &lt;file value=&quot;example.log&quot; /&gt;
        &lt;appendToFile value=&quot;true&quot; /&gt;
        &lt;maximumFileSize value=&quot;100KB&quot; /&gt;
        &lt;maxSizeRollBackups value=&quot;2&quot; /&gt;

        &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
            &lt;conversionPattern value=&quot;%level %thread %logger - %message%newline&quot; /&gt;
        &lt;/layout&gt;
    &lt;/appender&gt;
    
    &lt;root&gt;
        &lt;level value=&quot;DEBUG&quot; /&gt;
        &lt;appender-ref ref=&quot;Console&quot; /&gt;
        &lt;appender-ref ref=&quot;RollingFile&quot; /&gt;
    &lt;/root&gt;
&lt;/log4net&gt;</pre></div>
                <p>
                    Calling the enhanced <span class="code">MyApp</span> with the this configuration file will output the 
                    following on the console.
                </p>
                <div class="source"><pre>
 INFO [main] (MyApp.cs:16) - Entering application.
DEBUG [main] (Bar.cs:12) - Doing it again!
 INFO [main] (MyApp.cs:19) - Exiting application.</pre></div>
                <p>
                    In addition, as the <i>root</i> logger has been allocated a second appender, output 
                    will also be directed to the
                    <span class="code">example.log</span>
                    file. This file will be rolled over when it reaches 100KB. When roll-over 
                    occurs, the old version of
                    <span class="code">example.log</span>
                    is automatically moved to
                    <span class="code">example.log.1</span>.
                </p>
                <p>
                    Note that to obtain these different logging behaviors we did not need to 
                    recompile code. We could just as easily have logged to an email address, 
                    redirected all
                    <span class="code">Com.Foo</span>
                    output to an NT Event logger, or forwarded logging events to a remote log4net 
                    server, which would log according to local server policy.
                </p>
                <p>
                    For more examples of configuring appenders using the <span class="code">XmlConfigurator</span>
                    see the <a href="../config-examples.html">Example Appender Configuration</a> 
                    document.
                </p>
                
                <a name="attributes"></a><div class="section"><h2 id="attributes">Configuration Attributes</h2>
                    <p>
                        The log4net configuration can be configured using assembly-level attributes rather than
                        specified programmatically.
                    </p>
                    <ul>
                        <li>
                            <b>XmlConfiguratorAttribute</b>
                            <p>
                                The <span class="code">log4net.Config.XmlConfiguratorAttribute</span> Allows the
                                <span class="code">XmlConfigurator</span> to be configured using the following properties:
                            </p>
                            <ul>
                                <li>
                                    <b>ConfigFile</b>
                                    <p>
                                        If specified, this is the filename of the configuration file to use with the
                                        <span class="code">XmlConfigurator</span>. This file path is relative to the 
                                        application base directory (<span class="code">AppDomain.CurrentDomain.BaseDirectory</span>).
                                    </p>
                                    <p>
                                        This property cannot be used in conjunction with the 
                                        <span class="code">ConfigFileExtension</span> property.
                                    </p>
                                </li>
                                <li>
                                    <b>ConfigFileExtension</b>
                                    <p>
                                        If specified, this is the extension for the configuration file. The assembly 
                                        file name is used as the base name with the this extension appended. For example
                                        if the assembly is loaded from the a file <span class="code">TestApp.exe</span>
                                        and the <span class="code">ConfigFileExtension</span> property is set to
                                        <span class="code">log4net</span> then the configuration file name is 
                                        <span class="code">TestApp.exe.log4net</span>. This is equivalent to setting the
                                        <span class="code">ConfigFile</span> property to <span class="code">TestApp.exe.log4net</span>.
                                    </p>
                                    <p>
                                        The path to the configuration file is build by using the application base 
                                        directory (<span class="code">AppDomain.CurrentDomain.BaseDirectory</span>), 
                                        the assembly file name and the configuration file extension.
                                    </p>
                                    <p>
                                        This property cannot be used in conjunction with the 
                                        <span class="code">ConfigFile</span> property.
                                    </p>
                                </li>
                                <li>
                                    <b>Watch</b>
                                    <p>
                                        If this flag is specified and set to <span class="code">true</span>
                                        then the framework will watch the configuration file and will reload the config 
                                        each time the file is modified.
                                    </p>
                                </li>
                            </ul>
                            <p>
                                If neither of the <span class="code">ConfigFile</span> or <span class="code">ConfigFileExtension</span>
                                properties are specified, the application configuration file (e.g. <span class="code">TestApp.exe.config</span>) 
                                will be used as the log4net configuration file.
                            </p>
                            <p>
                                Example usage:
                            </p>
                            <div class="syntax"><div class="code"><pre>
// Configure log4net using the .config file
<b>[assembly: log4net.Config.XmlConfigurator(Watch=true)]</b>
// This will cause log4net to look for a configuration file
// called TestApp.exe.config in the application base
// directory (i.e. the directory containing TestApp.exe)
// The config file will be watched for changes.
                            </pre></div></div>
                            <div class="syntax"><div class="code"><pre>
// Configure log4net using the .log4net file
<b>[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension=&quot;log4net&quot;,Watch=true)]</b>
// This will cause log4net to look for a configuration file
// called TestApp.exe.log4net in the application base
// directory (i.e. the directory containing TestApp.exe)
// The config file will be watched for changes.
                            </pre></div></div>
                            <p>
                                This attribute may only be used once per assembly.
                            </p>
                        </li>
                    </ul>
                    <p>
                        Using attributes can be a clearer method for defining where the application's
                        configuration will be loaded from. However it is worth noting that attributes
                        are purely passive. They are information only. Therefore if you use configuration
                        attributes you must invoke log4net to allow it to read the attributes. A simple
                        call to <span class="code">LogManager.GetLogger</span> will cause the attributes
                        on the calling assembly to be read and processed. <b>Therefore it is imperative
                        to make a logging call as early as possible during the application start-up, and
                        certainly before any external assemblies have been loaded and invoked.</b>
                    </p>
                </div>
                
                <a name="appSettings"></a><div class="section"><h2 id="appSettings">appSettings</h2>
                  <p>
                    If you use <a href="#attributes">attributes</a> to
                    configure log4net, two settings of the
                    <tt>appSettings</tt> section of your
                    application's configuration file can be used to
                    override the values given in your assembly's
                    attributes.
                  </p>
                  <p>
                    The setting with the key &quot;log4net.Config&quot;
                    overrides the configuration file name (and is
                    considered to be relative to your application's
                    base directory), the setting with the key
                    &quot;log4net.Config.Watch&quot; determines whether the file
                    should be monitored for changes.
                  </p>
                  <p>
                    Even though the assembly attribute
                  </p>
                  <div class="syntax"><div class="code"><pre>
<b>[assembly: log4net.Config.XmlConfigurator(Watch=false)]</b>
                  </pre></div></div>
                  <p>
                    would configure your application to use a
                    configuration file &quot;TestApp.exe.config&quot; and not
                    monitor it for changes you can override this to
                    use the file &quot;log4net.config&quot; and monitor it
                    instead by adding
                  </p>
                  <div class="syntax"><div class="code"><pre>
&lt;appSettings&gt;
  &lt;add key=&quot;log4net.Config&quot; value=&quot;log4net.config&quot;/&gt;
  &lt;add key=&quot;log4net.Config.Watch&quot; value=&quot;True&quot;/&gt;
&lt;/appSettings&gt;
                  </pre></div></div>

                  <p>
                    to your application's configuration file.
                  </p>
                </div>

                <a name="files"></a><div class="section"><h2 id="files">Configuration Files</h2>
                    <p>
                        Typically the log4net configuration is specified using a file. This file can
                        be read in one of two ways:
                    </p>
                    <ul>
                        <li>Using the .NET <span class="code">System.Configuration</span> API</li>
                        <li>Reading the file contents directly</li>
                    </ul>
                    
                    <a name="dot-config"></a><div class="section"><h2 id="dot-config">.config Files</h2>
                        <p>    
                            The <span class="code">System.Configuration</span> API is only available if the
                            configuration data is in the application's config file; the file named 
                            <i>MyApp.exe.config</i> or <i>Web.config</i>. Because the <span class="code">System.Configuration</span> 
                            API does not support reloading of the config file the configuration settings 
                            cannot be watched using the <span class="code">log4net.Config.XmlConfigurator.ConfigureAndWatch</span> 
                            methods. The main advantage of using the <span class="code">System.Configuration</span>
                            APIs to read the configuration data is that it requires less permissions than accessing
                            the configuration file directly.
                        </p>
                        <p>
                            The only way to configure an application using the <span class="code">System.Configuration</span>
                            APIs is to call the <span class="code">log4net.Config.XmlConfigurator.Configure()</span> method or
                            the <span class="code">log4net.Config.XmlConfigurator.Configure(ILoggerRepository)</span> method.
                        </p>
                        <p>
                            In order to embed the configuration data in the .config file the section name must be
                            identified to the .NET config file parser using a <span class="code">configSections</span> element.
                            The section must specify the <span class="code">log4net.Config.Log4NetConfigurationSectionHandler</span>
                            that will be used to parse the config section. This type must be fully assembly qualified
                            because it is being loaded by the .NET config file parser not by log4net. The correct
                            assembly name for the log4net assembly must be specified.
                            The following is a simple example configuration file that specifies the correct
                            section handler to use for the log4net section.
                        </p>
                        <div class="source"><pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
&lt;configuration&gt;
    &lt;configSections&gt;
        &lt;section name=&quot;log4net&quot; type=&quot;log4net.Config.Log4NetConfigurationSectionHandler, log4net&quot; /&gt;
    &lt;/configSections&gt;
    &lt;log4net&gt;
        &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot; &gt;
            &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
                &lt;conversionPattern value=&quot;%date [%thread] %-5level %logger [%ndc] - %message%newline&quot; /&gt;
            &lt;/layout&gt;
        &lt;/appender&gt;
        &lt;root&gt;
            &lt;level value=&quot;INFO&quot; /&gt;
            &lt;appender-ref ref=&quot;ConsoleAppender&quot; /&gt;
        &lt;/root&gt;
    &lt;/log4net&gt;
&lt;/configuration&gt;</pre></div>
                        <p>
                            In the above example the <span class="code">log4net</span> assembly is specified.
                            This assembly must be located where the .NET runtime can find it. For example it could
                            be located in the same directory as the application. If the log4net assembly is stored in
                            the GAC then the fully qualified assembly name must be specified including the culture,
                            version and public key.
                        </p>
                        <p>
                            When using the .config file to specify the configuration the section name and 
                            XML element name must be <span class="code">log4net</span>.
                        </p>
                    </div>
                    
                    <a name="reading"></a><div class="section"><h2 id="reading">Reading Files Directly</h2>
                        <p>
                            The XmlConfigurator can directly read any XML file and use it to configure log4net. 
                            This includes the application's .config file; the file named <i>MyApp.exe.config</i> 
                            or <i>Web.config</i>. The only reason not to read the configuration file directly is if the
                            application does not have sufficient permissions to read the file, then the configuration
                            must be loaded using the .NET configuration APIs (see above).
                        </p>
                        <p>
                            The file to read the configuration from can be specified using any of
                            the <span class="code">log4net.Config.XmlConfigurator</span> methods that
                            accept a <span class="code">System.IO.FileInfo</span> object. Because the
                            file system can be monitored for file change notifications the 
                            <span class="code">ConfigureAndWatch</span> methods can be used to monitor
                            the configuration file for modifications and automatically reconfigure log4net.
                        </p>
                        <p>
                            Additionally the <span class="code">log4net.Config.XmlConfiguratorAttribute</span>
                            can be used to specify the file to read the configuration from.
                        </p>
                        <p>
                            The configuration is read from the <span class="code">log4net</span> element
                            in the file. Only one <span class="code">log4net</span> element can be specified
                            in the file but it may be located anywhere in the XML hierarchy. For example it
                            may be the root element:
                        </p>
                        <div class="source"><pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
&lt;log4net&gt;
    &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot; &gt;
        &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
            &lt;conversionPattern value=&quot;%date [%thread] %-5level %logger [%ndc] - %message%newline&quot; /&gt;
        &lt;/layout&gt;
    &lt;/appender&gt;
    &lt;root&gt;
        &lt;level value=&quot;INFO&quot; /&gt;
        &lt;appender-ref ref=&quot;ConsoleAppender&quot; /&gt;
    &lt;/root&gt;
&lt;/log4net&gt;</pre></div>
                        <p>
                            Or it may be nested within other elements:
                        </p>
                        <div class="source"><pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
&lt;configuration&gt;
    &lt;configSections&gt;
        &lt;section name=&quot;log4net&quot; type=&quot;System.Configuration.IgnoreSectionHandler&quot; /&gt;
    &lt;/configSections&gt;
    &lt;log4net&gt;
        &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot; &gt;
            &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
                &lt;conversionPattern value=&quot;%date [%thread] %-5level %logger [%ndc] - %message%newline&quot; /&gt;
            &lt;/layout&gt;
        &lt;/appender&gt;
        &lt;root&gt;
            &lt;level value=&quot;INFO&quot; /&gt;
            &lt;appender-ref ref=&quot;ConsoleAppender&quot; /&gt;
        &lt;/root&gt;
    &lt;/log4net&gt;
&lt;/configuration&gt;</pre></div>
                        <p>
                            The above example shows how the configuration data can be embedded 
                            inside a .config file even though the file is being read directly
                            by log4net. An important note is that the .NET config file parser
                            will throw an exception if it finds an element that has not been
                            registered using the <span class="code">configSections</span> element.
                            Therefore in the above example the <span class="code">log4net</span>
                            section name is registered, but the type specified to handle the
                            section is <span class="code">System.Configuration.IgnoreSectionHandler</span>.
                            This is a built-in class that indicates that another method for reading
                            the config section will be employed.
                        </p>
                    </div>
                    
                </div>
                
                <a name="syntax"></a><div class="section"><h2 id="syntax">Configuration Syntax</h2>
                    <p>
                        log4net includes a configuration reader that parses an XML DOM, the 
                        <span class="code">log4net.Config.XmlConfigurator</span>. This section defines the
                        syntax accepted by the configurator.
                    </p>
                    <p>
                        This is an example of a valid XML configuration. The root element
                        must be <span class="code">&lt;log4net&gt;</span>. Note that this does not mean
                        that this element cannot be embedded in another XML document. See the section above 
                        on <a href="#configuration.files">Configuration Files</a> for more information
                        on how to embed the XmlConfigurator XML in a configuration file.
                    </p>
                    <div class="source"><pre>
&lt;log4net&gt;
    &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot; &gt;
        &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
            &lt;conversionPattern value=&quot;%date [%thread] %-5level %logger [%ndc] - %message%newline&quot; /&gt;
        &lt;/layout&gt;
    &lt;/appender&gt;
    &lt;root&gt;
        &lt;level value=&quot;INFO&quot; /&gt;
        &lt;appender-ref ref=&quot;ConsoleAppender&quot; /&gt;
    &lt;/root&gt;
&lt;/log4net&gt;</pre></div>
                    <p>
                        The <span class="code">&lt;log4net&gt;</span> element supports the following attributes:
                    </p>
                    <div class="table">
                        <table border="0" class="bodyTable">
                            <colgroup>
                                <col style="text-align: left; white-space: nowrap; width: 7em" />
                                <col style="text-align: left;" />
                            </colgroup>
                            <tr class="a">
                                <th>Attribute</th>
                                <th>Description</th>
                            </tr>
                            <tr class="b">
                                <td>debug</td>
                                <td>
                                    Optional attribute. Value must be either <span class="code">true</span> or <span class="code">false</span>.
                                    The default value is <span class="code">false</span>. Set this attribute to <span class="code">true</span>
                                    to enable internal log4net debugging for this configuration.
                                </td>
                            </tr>
                            <tr class="a">
                                <td>update</td>
                                <td>
                                    Optional attribute. Value must be either <span class="code">Merge</span> or <span class="code">Overwrite</span>.
                                    The default value is <span class="code">Merge</span>. Set this attribute to <span class="code">Overwrite</span>
                                    to reset the configuration of the repository being configured before applying this configuration.
                                </td>
                            </tr>
                            <tr class="b">
                                <td>threshold</td>
                                <td>
                                    Optional attribute. Value must be the name of a level registered on the repository.
                                    The default value is <span class="code">ALL</span>. Set this attribute to limit the messages
                                    that are logged across the whole repository, regardless of the logger that the message is logged to.
                                </td>
                            </tr>
                        </table>
                    </div>
                    <p>
                        The <span class="code">&lt;log4net&gt;</span> element supports the following child elements:
                    </p>
                    <div class="table">
                        <table border="0" class="bodyTable">
                            <colgroup>
                                <col style="text-align: left; white-space: nowrap; width: 7em" />
                                <col style="text-align: left;" />
                            </colgroup>
                            <tr class="a">
                                <th>Element</th>
                                <th>Description</th>
                            </tr>
                            <tr class="b">
                                <td>appender</td>
                                <td>
                                    Zero or more elements allowed. Defines an appender.
                                </td>
                            </tr>
                            <tr class="a">
                                <td>logger</td>
                                <td>
                                    Zero or more elements allowed. Defines the configuration of a logger.
                                </td>
                            </tr>
                            <tr class="b">
                                <td>renderer</td>
                                <td>
                                    Zero or more elements allowed. Defines an object renderer.
                                </td>
                            </tr>
                            <tr class="a">
                                <td>root</td>
                                <td>
                                    Optional element, maximum of one allowed. Defines the configuration of the root logger.
                                </td>
                            </tr>
                            <tr class="b">
                                <td>param</td>
                                <td>
                                    Zero or more elements allowed. Repository specific parameters
                                </td>
                            </tr>
                        </table>
                    </div>
                    
                    <a name="appenders"></a><div class="section"><h2 id="appenders">Appenders</h2>
                        <p>
                            Appenders may only be defined as child elements of the <span class="code">&lt;log4net&gt;</span>
                            element. Each appender must be uniquely named. The implementing type for the appender must be specified.
                        </p>
                        <p>
                            This example shows an appender of type <span class="code">log4net.Appender.ConsoleAppender</span> being
                            defined. The appender will be known as <i>ConsoleAppender</i>.
                        </p>
                        <div class="source"><pre>
&lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot; &gt;
    &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
        &lt;conversionPattern value=&quot;%date [%thread] %-5level %logger [%ndc] - %message%newline&quot; /&gt;
    &lt;/layout&gt;
&lt;/appender&gt;</pre></div>
                        
                        <p>
                            The <span class="code">&lt;appender&gt;</span> element supports the following attributes:
                        </p>
                        <div class="table">
                            <table border="0" class="bodyTable">
                                <colgroup>
                                    <col style="text-align: left; white-space: nowrap; width: 7em" />
                                    <col style="text-align: left;" />
                                </colgroup>
                                <tr class="a">
                                    <th>Attribute</th>
                                    <th>Description</th>
                                </tr>
                                <tr class="b">
                                    <td>name</td>
                                    <td>
                                        Required attribute. Value must be a string name for this appender. The name must be unique
                                        among all the appenders defined in this configuration file. This name is used by the 
                                        <span class="code">&lt;appender-ref&gt;</span> element of a Logger to reference an appender.
                                    </td>
                                </tr>
                                <tr class="a">
                                    <td>type</td>
                                    <td>
                                        Required attribute. Value must be the type name for this appender. If the appender is
                                        not defined in the log4net assembly this type name must be fully assembly qualified.
                                    </td>
                                </tr>
                            </table>
                        </div>
                        <p>
                            The <span class="code">&lt;appender&gt;</span> element supports the following child elements:
                        </p>
                        <div class="table">
                            <table border="0" class="bodyTable">
                                <colgroup>
                                    <col style="text-align: left; white-space: nowrap; width: 7em" />
                                    <col style="text-align: left;" />
                                </colgroup>
                                <tr class="a">
                                    <th>Element</th>
                                    <th>Description</th>
                                </tr>
                                <tr class="b">
                                    <td>appender-ref</td>
                                    <td>
                                        Zero or more elements allowed. Allows the appender to reference other appenders.
                                        Not supported by all appenders.
                                    </td>
                                </tr>
                                <tr class="a">
                                    <td>filter</td>
                                    <td>
                                        Zero or more elements allowed. Defines the filters used by this appender.
                                    </td>
                                </tr>
                                <tr class="b">
                                    <td>layout</td>
                                    <td>
                                        Optional element, maximum of one allowed. Defines the layout used by this appender.
                                    </td>
                                </tr>
                                <tr class="a">
                                    <td>param</td>
                                    <td>
                                        Zero or more elements allowed. Appender specific parameters.
                                    </td>
                                </tr>
                            </table>
                        </div>
                        
                        <p>
                            For examples of configuring appenders see the 
                            <a href="example-config-appender.html">Example Appender Configuration</a> 
                            document.
                        </p>
                                                
                        <a name="filters"></a><div class="section"><h2 id="filters">Filters</h2>
                            <p>
                                Filters elements may only be defined as children of <span class="code">&lt;appender&gt;</span> elements.
                            </p>
                            <p>
                                The <span class="code">&lt;filter&gt;</span> element supports the following attributes:
                            </p>
                            <div class="table">
                                <table border="0" class="bodyTable">
                                    <colgroup>
                                        <col style="text-align: left; white-space: nowrap; width: 7em" />
                                        <col style="text-align: left;" />
                                    </colgroup>
                                    <tr class="a">
                                        <th>Attribute</th>
                                        <th>Description</th>
                                    </tr>
                                    <tr class="b">
                                        <td>type</td>
                                        <td>
                                            Required attribute. Value must be the type name for this filter. If the filter is
                                            not defined in the log4net assembly this type name must be fully assembly qualified.
                                        </td>
                                    </tr>
                                </table>
                            </div>
                            <p>
                                The <span class="code">&lt;filter&gt;</span> element supports the following child elements:
                            </p>
                            <div class="table">
                                <table border="0" class="bodyTable">
                                    <colgroup>
                                        <col style="text-align: left; white-space: nowrap; width: 7em" />
                                        <col style="text-align: left;" />
                                    </colgroup>
                                    <tr class="a">
                                        <th>Element</th>
                                        <th>Description</th>
                                    </tr>
                                    <tr class="b">
                                        <td>param</td>
                                        <td>
                                            Zero or more elements allowed. Filter specific parameters.
                                        </td>
                                    </tr>
                                </table>
                            </div>                            

                            <p>
                                Filters form a chain that the event has to pass through. Any filter along the way can accept the event 
                                and stop processing, deny the event and stop processing, or allow the event on to the next filter. 
                                If the event gets to the end of the filter chain without being denied it is implicitly accepted and will be logged.
                            </p>
                            <div class="source"><pre>
&lt;filter type=&quot;log4net.Filter.LevelRangeFilter&quot;&gt;
    &lt;levelMin value=&quot;INFO&quot; /&gt;
    &lt;levelMax value=&quot;FATAL&quot; /&gt;
&lt;/filter&gt;</pre></div>
                            <p>
                                This filter will deny events that have a level that is lower than <span class="code">INFO</span>
                                or higher than <span class="code">FATAL</span>. 
                                All events between <span class="code">INFO</span> and <span class="code">FATAL</span> will be logged.
                            </p>
                            <p>
                                If we want to only allow messages through that have a specific substring (e.g. 'database') 
                                then we need to specify the following filters:
                            </p>
                            <div class="source"><pre>
&lt;filter type=&quot;log4net.Filter.StringMatchFilter&quot;&gt;
    &lt;stringToMatch value=&quot;database&quot; /&gt;
&lt;/filter&gt;
&lt;filter type=&quot;log4net.Filter.DenyAllFilter&quot; /&gt;</pre></div>
                            <p>
                                The first filter will look for the substring 'database' in the message text of the event. 
                                If the text is found the filter will accept the message and filter processing will stop, 
                                the message will be logged. If the substring is not found the event will be passed to 
                                the next filter to process. If there is no next filter the event would be implicitly 
                                accepted and would be logged. But because we don't want the non matching events to be 
                                logged we need to use a <span class="code">log4net.Filter.DenyAllFilter</span>
                                that will just deny all events that reach it. This filter is only useful at the end of the filter chain.
                            </p>
                            <p>
                                If we want to allow events that have either 'database' or 'ldap' in the message text we can use the following filters:
                            </p>
                            <div class="source"><pre>
&lt;filter type=&quot;log4net.Filter.StringMatchFilter&quot;&gt;
    &lt;stringToMatch value=&quot;database&quot;/&gt;
&lt;/filter&gt;
&lt;filter type=&quot;log4net.Filter.StringMatchFilter&quot;&gt;
    &lt;stringToMatch value=&quot;ldap&quot;/&gt;
&lt;/filter&gt;
&lt;filter type=&quot;log4net.Filter.DenyAllFilter&quot; /&gt;</pre></div>
                        </div>
                        
                        <a name="layouts"></a><div class="section"><h2 id="layouts">Layouts</h2>
                            <p>
                                Layout elements may only be defined as children of <span class="code">&lt;appender&gt;</span> elements.
                            </p>
                            <p>
                                The <span class="code">&lt;layout&gt;</span> element supports the following attributes:
                            </p>
                            <div class="table">
                                <table border="0" class="bodyTable">
                                    <colgroup>
                                        <col style="text-align: left; white-space: nowrap; width: 7em" />
                                        <col style="text-align: left;" />
                                    </colgroup>
                                    <tr class="a">
                                        <th>Attribute</th>
                                        <th>Description</th>
                                    </tr>
                                    <tr class="b">
                                        <td>type</td>
                                        <td>
                                            Required attribute. Value must be the type name for this layout. If the layout is
                                            not defined in the log4net assembly this type name must be fully assembly qualified.
                                        </td>
                                    </tr>
                                </table>
                            </div>
                            <p>
                                The <span class="code">&lt;layout&gt;</span> element supports the following child elements:
                            </p>
                            <div class="table">
                                <table border="0" class="bodyTable">
                                    <colgroup>
                                        <col style="text-align: left; white-space: nowrap; width: 7em" />
                                        <col style="text-align: left;" />
                                    </colgroup>
                                    <tr class="a">
                                        <th>Element</th>
                                        <th>Description</th>
                                    </tr>
                                    <tr class="b">
                                        <td>param</td>
                                        <td>
                                            Zero or more elements allowed. Layout specific parameters.
                                        </td>
                                    </tr>
                                </table>
                            </div>
                            <p>
                                This example shows how to configure a layout that uses the <span class="code">log4net.Layout.PatternLayout</span>.
                            </p>
                            <div class="source"><pre>
&lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
    &lt;conversionPattern value=&quot;%date [%thread] %-5level %logger [%ndc] - %message%newline&quot; /&gt;
&lt;/layout&gt;</pre></div>
                            
                        </div>
                    </div>
                    
                    <a name="root"></a><div class="section"><h2 id="root">Root Logger</h2>
                        <p>
                            Only one root logger element may only be defined and it must be a child of <span class="code">&lt;log4net&gt;</span> element.
                            The root logger is the root of the logger hierarchy. All loggers ultimately inherit from this logger.
                        </p>
                        <p>
                            An example root logger:
                        </p>
                        <div class="source"><pre>
&lt;root&gt;
    &lt;level value=&quot;INFO&quot; /&gt;
    &lt;appender-ref ref=&quot;ConsoleAppender&quot; /&gt;
&lt;/root&gt;</pre></div>
                        
                        <p>
                            The <span class="code">&lt;root&gt;</span> element supports no attributes.
                        </p>
                        <p>
                            The <span class="code">&lt;root&gt;</span> element supports the following child elements:
                        </p>
                        <div class="table">
                            <table border="0" class="bodyTable">
                                <colgroup>
                                    <col style="text-align: left; white-space: nowrap; width: 7em" />
                                    <col style="text-align: left;" />
                                </colgroup>
                                <tr class="a">
                                    <th>Element</th>
                                    <th>Description</th>
                                </tr>
                                <tr class="b">
                                    <td>appender-ref</td>
                                    <td>
                                        Zero or more elements allowed. Allows the logger to reference appenders by name.
                                    </td>
                                </tr>
                                <tr class="a">
                                    <td>level</td>
                                    <td>
                                        Optional element, maximum of one allowed. Defines the logging level for this logger.
                                        This logger will only accept event that are at this level or above.
                                    </td>
                                </tr>
                                <tr class="b">
                                    <td>param</td>
                                    <td>
                                        Zero or more elements allowed. Logger specific parameters.
                                    </td>
                                </tr>
                            </table>
                        </div>
                    </div>
                    
                    <a name="loggers"></a><div class="section"><h2 id="loggers">Loggers</h2>
                        <p>
                            Logger elements may only be defined as children of the <span class="code">&lt;log4net&gt;</span> element.
                        </p>
                        <p>
                            An example logger:
                        </p>
                        <div class="source"><pre>
&lt;logger name=&quot;LoggerName&quot;&gt;
    &lt;level value=&quot;DEBUG&quot; /&gt;
    &lt;appender-ref ref=&quot;ConsoleAppender&quot; /&gt;
&lt;/logger&gt;</pre></div>
                        
                        <p>
                            The <span class="code">&lt;logger&gt;</span> element supports the following attributes.
                        </p>
                        <div class="table">
                            <table border="0" class="bodyTable">
                                <colgroup>
                                    <col style="text-align: left; white-space: nowrap; width: 7em" />
                                    <col style="text-align: left;" />
                                </colgroup>
                                <tr class="a">
                                    <th>Attribute</th>
                                    <th>Description</th>
                                </tr>
                                <tr class="b">
                                    <td>name</td>
                                    <td>
                                        Required attribute. Value must be the name of the logger.
                                    </td>
                                </tr>
                                <tr class="a">
                                    <td>additivity</td>
                                    <td>
                                        Optional attribute. Value may be either <span class="code">true</span> or <span class="code">false</span>.
                                        The default value is <span class="code">true</span>. Set this attribute to <span class="code">false</span>
                                        to prevent this logger from inheriting the appenders defined on parent loggers.
                                    </td>
                                </tr>
                            </table>
                        </div>
                        <p>
                            The <span class="code">&lt;logger&gt;</span> element supports the following child elements:
                        </p>
                        <div class="table">
                            <table border="0" class="bodyTable">
                                <colgroup>
                                    <col style="text-align: left; white-space: nowrap; width: 7em" />
                                    <col style="text-align: left;" />
                                </colgroup>
                                <tr class="a">
                                    <th>Element</th>
                                    <th>Description</th>
                                </tr>
                                <tr class="b">
                                    <td>appender-ref</td>
                                    <td>
                                        Zero or more elements allowed. Allows the logger to reference appenders by name.
                                    </td>
                                </tr>
                                <tr class="a">
                                    <td>level</td>
                                    <td>
                                        Optional element, maximum of one allowed. Defines the logging level for this logger.
                                        This logger will only accept event that are at this level or above.
                                    </td>
                                </tr>
                                <tr class="b">
                                    <td>param</td>
                                    <td>
                                        Zero or more elements allowed. Logger specific parameters.
                                    </td>
                                </tr>
                            </table>
                        </div>
                    </div>
                    
                    <a name="renderers"></a><div class="section"><h2 id="renderers">Renderers</h2>
                        <p>
                            Renderer elements may only be defined as children of the <span class="code">&lt;log4net&gt;</span> element.
                        </p>
                        <p>
                            An example renderer:
                        </p>
                        <div class="source"><pre>
&lt;renderer renderingClass=&quot;MyClass.MyRenderer&quot; renderedClass=&quot;MyClass.MyFunkyObject&quot; /&gt;</pre></div>
                        
                        <p>
                            The <span class="code">&lt;renderer&gt;</span> element supports the following attributes.
                        </p>
                        <div class="table">
                            <table border="0" class="bodyTable">
                                <colgroup>
                                    <col style="text-align: left; white-space: nowrap; width: 7em" />
                                    <col style="text-align: left;" />
                                </colgroup>
                                <tr class="a">
                                    <th>Attribute</th>
                                    <th>Description</th>
                                </tr>
                                <tr class="b">
                                    <td>renderingClass</td>
                                    <td>
                                        Required attribute. Value must be the type name for this renderer. If the type is
                                        not defined in the log4net assembly this type name must be fully assembly qualified.
                                        This is the type of the object that will take responsibility for rendering the
                                        <i>renderedClass</i>.
                                    </td>
                                </tr>
                                <tr class="a">
                                    <td>renderedClass</td>
                                    <td>
                                        Required attribute. Value must be the type name for the target type for this renderer. If the type is
                                        not defined in the log4net assembly this type name must be fully assembly qualified.
                                        This is the name of the type that this renderer will render.
                                    </td>
                                </tr>
                            </table>
                        </div>
                        <p>
                            The <span class="code">&lt;renderer&gt;</span> element supports no child elements.
                        </p>
                    </div>
                    
                    <a name="param"></a><div class="section"><h2 id="param">Parameters</h2>
                        <p>
                            Parameter elements may be children of many elements. See the specific elements above for details.
                        </p>
                        <p>
                            An example param:
                        </p>
                        <div class="source"><pre>
&lt;param name=&quot;ConversionPattern&quot; value=&quot;%date [%thread] %-5level %logger [%ndc] - %message%newline&quot; /&gt;</pre></div>
                        
                        <p>
                            The <span class="code">&lt;param&gt;</span> element supports the following attributes.
                        </p>
                        <div class="table">
                            <table border="0" class="bodyTable">
                                <colgroup>
                                    <col style="text-align: left; white-space: nowrap; width: 7em" />
                                    <col style="text-align: left;" />
                                </colgroup>
                                <tr class="a">
                                    <th>Attribute</th>
                                    <th>Description</th>
                                </tr>
                                <tr class="b">
                                    <td>name</td>
                                    <td>
                                        Required attribute. Value must be the name of the parameter to set on the parent object.
                                    </td>
                                </tr>
                                <tr class="a">
                                    <td>value</td>
                                    <td>
                                        Optional attribute. One of <i>value</i> or <i>type</i> attributes must be specified.
                                        The value of this attribute is a string that can be converted to the value of the
                                        parameter.
                                    </td>
                                </tr>
                                <tr class="b">
                                    <td>type</td>
                                    <td>
                                        Optional attribute. One of <i>value</i> or <i>type</i> attributes must be specified.
                                        The value of this attribute is a type name to create and set as the value of the
                                        parameter. If the type is not defined in the log4net assembly this type name must 
                                        be fully assembly qualified.
                                    </td>
                                </tr>
                            </table>
                        </div>
                        <p>
                            The <span class="code">&lt;param&gt;</span> element supports the following child elements:
                        </p>
                        <div class="table">
                            <table border="0" class="bodyTable">
                                <colgroup>
                                    <col style="text-align: left; white-space: nowrap; width: 7em" />
                                    <col style="text-align: left;" />
                                </colgroup>
                                <tr class="a">
                                    <th>Element</th>
                                    <th>Description</th>
                                </tr>
                                <tr class="b">
                                    <td>param</td>
                                    <td>
                                        Zero or more elements allowed. Parameter specific parameters.
                                    </td>
                                </tr>
                            </table>
                        </div>
                        <p>
                            An example param that uses nested param elements:
                        </p>
                        <div class="source"><pre>
&lt;param name=&quot;evaluator&quot; type=&quot;log4net.spi.LevelEvaluator&quot;&gt;
    &lt;param name=&quot;Threshold&quot; value=&quot;WARN&quot;/&gt;
&lt;param&gt;</pre></div>

                        <a name="extension"></a><div class="section"><h2 id="extension">Extension Parameters</h2>
                            <p>
                                Configuration parameters map directly to writable properties on an object.
                                The properties available depend on the actual type of the object being
                                configured. The log4net SDK documentation contains the API reference for
                                all the components included in the log4net assembly.
                            </p>
                            <p>
                                For 3rd party components please see their relevant API reference for 
                                details of the properties available.
                            </p>
                        </div>

                        <a name="new-param"></a><div class="section"><h2 id="new-param">Compact Parameter Syntax</h2>
                            <p>
                                All parameters may alternately be specified using the parameter name as the element name
                                rather than using the <i>param</i> element and <i>name</i> attribute.
                            </p>
                            <p>
                                For example a param:
                            </p>
                            <div class="source"><pre>
&lt;param name=&quot;evaluator&quot; type=&quot;log4net.spi.LevelEvaluator&quot;&gt;
    &lt;param name=&quot;Threshold&quot; value=&quot;WARN&quot;/&gt;
&lt;param&gt;</pre></div>
                            <p>
                                may be written as:
                            </p>
                            <div class="source"><pre>
&lt;evaluator type=&quot;log4net.spi.LevelEvaluator&quot;&gt;
    &lt;threshold value=&quot;WARN&quot;/&gt;
&lt;evaluator&gt;</pre></div>
                        </div>
                    </div>
                </div>
                
            </div>

        </div>
    

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
        <div class="xright">Copyright &#169;                    2004-2013
                        <a href="http://www.apache.org">Apache Software Foundation</a>.
                  
        
       Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.</div><br />
        <div class="xright">Apache log4net, Apache, log4net, the Apache feather logo, the Apache Logging Services project logo and the Built by Maven logo are trademarks of The Apache Software Foundation.</div>
        <div class="clear">
      </div>
    </div>
  </body>
</html>
