You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by da...@apache.org on 2020/08/27 06:56:39 UTC

svn commit: r1064832 [16/21] - in /websites/production/logging/content/log4net/log4net-2.0.9: ./ css/ images/ img/ js/ release/ release/howto/ release/manual/

Added: websites/production/logging/content/log4net/log4net-2.0.9/release/manual/configuration.html
==============================================================================
--- websites/production/logging/content/log4net/log4net-2.0.9/release/manual/configuration.html (added)
+++ websites/production/logging/content/log4net/log4net-2.0.9/release/manual/configuration.html Thu Aug 27 06:56:38 2020
@@ -0,0 +1,1819 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+   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.
+-->
+<!-- Generated by Apache Maven Doxia at 2020-08-26 -->
+<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 &#x2013; Apache log4net Manual: Configuration - Apache log4net</title>
+		<link rel="stylesheet" href="../../css/bootstrap.min.css" type="text/css" />
+		<link rel="stylesheet" href="../../css/site.css" type="text/css" />
+		<script type="text/javascript" src="../../js/jquery.min.js"></script>
+		<script type="text/javascript" src="../../js/bootstrap.min.js"></script>
+		<script type="text/javascript" src="../../js/prettify.min.js"></script>
+		<script type="text/javascript" src="../../js/site.js"></script>
+      <meta name="author" content="Nicko Cadell" />
+    <meta name="Date-Revision-yyyymmdd" content="20200826" />
+    <meta http-equiv="Content-Language" content="en" />
+		<meta name="keywords" content="log4net configuration, log4net" />
+				</head>
+	<body class="composite">
+		<a href="https://logging.apache.org/">
+			<img class="logo-left" src="../../images/ls-logo.jpg" alt="Apache logging services logo" />
+		</a>
+		<!--img class="logo-right" src="../../images/logo.png" alt="Apache log4net logo" /-->
+		<div class="clear"></div>
+
+		<div class="navbar">
+			<div class="navbar-inner">
+				<div class="container-fluid">
+					<a class="brand" href="http://logging.apache.org/log4net/">Apache log4net &trade;</a>
+						<ul class="nav">
+						<li>
+					
+				
+				<a href="https://wiki.apache.org/logging" class="external" target="_blank" title="Logging Wiki">Logging Wiki</a>
+			</li>
+					<li>
+					
+				
+				<a href="https://www.apache.org/" class="external" target="_blank" title="Apache">Apache</a>
+			</li>
+					<li>
+					
+				
+				<a href="https://logging.apache.org/" class="external" target="_blank" title="Logging Services">Logging Services</a>
+			</li>
+					<li>
+					
+				
+				<a href="https://github.com/apache/logging-log4net/" class="external" target="_blank" title="GitHub">GitHub</a>
+			</li>
+		</ul>
+				</div>
+			</div>
+		</div>
+
+		<div class="container-fluid">
+			<table class="layout-table">
+				<tr>
+					<td class="sidebar">
+						<div class="well sidebar-nav">
+										<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-home"></i>Apache log4net</li>
+																						<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/security-reports.html" title="Security Reports">Security Reports</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>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-file"></i>Documentation</li>
+																						<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>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-book"></i>Manual</li>
+																						<li class="none">
+									<a href="../../release/manual/introduction.html" title="Introduction">Introduction</a>
+					</li>
+ 																	<li class="none active">
+									<a href="../../release/manual/configuration.html" title="Configuration">Configuration</a>
+					</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>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-pencil"></i>For Contributors</li>
+																						<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>
+ 																<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>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-cog"></i>Project Reports</li>
+																						<li class="none">
+									<a href="../../rat-report.html" title="RAT Report">RAT Report</a>
+					</li>
+ 								</ul>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-info-sign"></i>Apache</li>
+																						<li class="none">
+					
+				
+				<a href="http://www.apache.org/" class="external" target="_blank" title="Home">Home</a>
+					</li>
+ 																<li class="none">
+					
+				
+				<a href="http://www.apache.org/licenses/" class="external" target="_blank" title="License">License</a>
+					</li>
+ 																<li class="none">
+					
+				
+				<a href="http://www.apache.org/foundation/sponsorship.html" class="external" target="_blank" title="Sponsorship">Sponsorship</a>
+					</li>
+ 																<li class="none">
+					
+				
+				<a href="http://www.apache.org/foundation/thanks.html" class="external" target="_blank" title="Thanks">Thanks</a>
+					</li>
+ 																<li class="none">
+					
+				
+				<a href="http://www.apache.org/security/" class="external" target="_blank" title="Security">Security</a>
+					</li>
+ 																<li class="none">
+					
+				
+				<a href="http://www.apachecon.com" class="external" target="_blank" title="Conferences">Conferences</a>
+					</li>
+ 								</ul>
+							</div>
+						<div id="poweredBy">
+															<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+				<img class="poweredBy" alt="Built by Maven" src="../../images/maven-feather.png" />
+			</a>
+									</div>
+					</td>
+					<td class="content">
+						<!-- 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" id="main">
+<h2><a name="Apache_log4net_Manual_-_Configuration"></a>Apache log4net&#x2122; Manual - Configuration</h2>
+
+            <a name="config"></a>
+<div class="section" id="config">
+<h2><a name="Configuration"></a>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>
+<pre class="code">
+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>
+<pre class="code">
+// 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>
+<pre class="code">
+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" id="attributes">
+<h2><a name="Configuration_Attributes"></a>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>
+<pre class="code">
+// 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>
+<pre class="code">
+// 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" id="appSettings">
+<h2><a name="appSettings"></a>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>
+<pre class="code">
+<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>
+<pre class="code">
+&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" id="files">
+<h2><a name="Configuration_Files"></a>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" id="dot-config">
+<h2><a name="a.config_Files"></a>.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" id="reading">
+<h2><a name="Reading_Files_Directly"></a>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" id="syntax">
+<h2><a name="Configuration_Syntax"></a>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" id="appenders">
+<h2><a name="Appenders"></a>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="../config-examples.html">Example Appender Configuration</a> 
+                            document.
+                        </p>
+                                                
+                        <a name="filters"></a>
+<div class="section" id="filters">
+<h2><a name="Filters"></a>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" id="layouts">
+<h2><a name="Layouts"></a>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" id="root">
+<h2><a name="Root_Logger"></a>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" id="loggers">
+<h2><a name="Loggers"></a>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" id="renderers">
+<h2><a name="Renderers"></a>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" id="param">
+<h2><a name="Parameters"></a>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" id="extension">
+<h2><a name="Extension_Parameters"></a>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" id="new-param">
+<h2><a name="Compact_Parameter_Syntax"></a>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>
+    
+
+					</td>
+				</tr>
+			</table>
+		</div>
+
+		<div class="footer">
+							<p>Copyright &copy; 2004-2020 <a class="external" href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.</p>
+				<p>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.</p>
+				<p>Site powered by <a class="external" href="http://getbootstrap.com/">Twitter Bootstrap</a>. Icons from <a class="external" href="http://glyphicons.com/">Glyphicons Free</a>.</p>
+			</div>
+		</div>
+	</body>
+</html>