diff --git a/src/site/xdoc/release/release-notes.xml b/src/site/xdoc/release/release-notes.xml
index 3384ad7..89ce857 100644
--- a/src/site/xdoc/release/release-notes.xml
+++ b/src/site/xdoc/release/release-notes.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" ?>
 <!--
-Licensed to the Apache Software Foundation (ASF) under one or more 
+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. 
+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 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
@@ -22,1321 +22,1837 @@
         <title>Apache log4net: Release Notes</title>
     </properties>
 
-    <meta name="keywords" content="log4net release notes, log4net" />
+    <meta name="keywords" content="log4net release notes, log4net"/>
 
     <body>
 
         <section id="main" name="Apache log4net&#x2122; Release Notes">
 
-        <section id="2.0.8" name="2.0.8">
-          <p>
-            Apache log4net 2.0.8 fixes a
-            <code>LockRecursionException</code> that could happen
-            inside the <code>FileAppender</code> under certain
-            circumstances. It also adds support for
-            <code>LogicalThreadContext</code> to the .NET Standard
-            build based on <code>AsyncLocal</code> rather than
-            <code>CallContext</code>.
-          </p>
-          
-	  <section id="2.0.8-bug" name="Bug Fixes">
-            <ul>
-              <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-466'>LOG4NET-466</a>] -         &quot;LockRecursionException: A read lock may not be acquired with the write lock held in this mode.&quot; exception
-              </li>
-              <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-550'>LOG4NET-550</a>] -         Logging recursively from an Appender not supported for NET_4_0 and MONO_4_0
-              </li>
-              <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-551'>LOG4NET-551</a>] -         LockRecursionException when using File Appenders
-              </li>
-              <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-554'>LOG4NET-554</a>] -         LogicalThreadContext was removed in .NETStandard
-              </li>
-            </ul>
-          </section>
+            <section id="2.0.9" name="2.0.9">
+                <p>
+                    Apache log4net 2.0.9 adds <code>netstandard2.0</code> support
+                    and restructures the project to enable easier build as well as build
+                    at AppVeyer. Project files have been updated to the modern Sdk format.
+                </p>
+                <section id="2.0.9-bug" name="Bug Fixes">
+                    <ul>
+                        <li>[<a href="https://issues.apache.org/jira/browse/LOG4NET-559">LOG4NET-559</a>] Add null checkes to avoid issues thrown by custom appenders</li>
+                        <li>[<a href="https://issues.apache.org/jira/browse/LOG4NET-563">LOG4NET-563</a>] Site styling copied from log4j</li>
+                    </ul>
+                </section>
+            </section>
+            <section id="2.0.8" name="2.0.8">
+                <p>
+                    Apache log4net 2.0.8 fixes a
+                    <code>LockRecursionException</code>
+                    that could happen
+                    inside the <code>FileAppender</code> under certain
+                    circumstances. It also adds support for
+                    <code>LogicalThreadContext</code>
+                    to the .NET Standard
+                    build based on <code>AsyncLocal</code> rather than
+                    <code>CallContext</code>.
+                </p>
 
-          <section id="2.0.8-new" name="New Features">
-            <ul>
-              <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-553'>LOG4NET-553</a>] -         DebugAppender configuration should give the possibility to disable outputting loggerName as category
-              </li>
-            </ul>
-	  </section>
-        </section>
+                <section id="2.0.8-bug" name="Bug Fixes">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-466'>LOG4NET-466</a>] - &quot;LockRecursionException:
+                            A read lock may not be acquired with the write lock held in this mode.&quot; exception
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-550'>LOG4NET-550</a>] - Logging
+                            recursively from an Appender not supported for NET_4_0 and MONO_4_0
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-551'>LOG4NET-551</a>] -
+                            LockRecursionException when using File Appenders
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-554'>LOG4NET-554</a>] -
+                            LogicalThreadContext was removed in .NETStandard
+                        </li>
+                    </ul>
+                </section>
 
-        <section id="2.0.7" name="2.0.7">
-          <p>
-            Apache log4net 2.0.7 fixes a glitch in nuget packaging and
-            is otherwise identical to 2.0.6 (apart from the copyright
-            year and assembly version). If you are not using the nuget
-            package there is no reason to upgrade.
-          </p>
-          
-	  <section id="2.0.7-bug" name="Bug Fixes">
-            <ul>
-              <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-540'>LOG4NET-540</a>] -         nuget dependencies for .NET Standard leak into net46
-              </li>
-            </ul>
-          </section>
-        </section>
-
-        <section id="2.0.6" name="2.0.6">
-
-          <p>
-            The Apache log4net team is now responsible for the nuget
-            package, we've changed the version number of this release
-            to align the version numbers. Release 2.0.6 is supposed to
-            be compatible with 1.2.15.
-          </p>
-
-          <p>
-            The binary distributions no longer contain assemblies
-            built for the .NET Framework 1.x or Mono 1.x - you can
-            build those yourself using the source distribution.
-          </p>
-
-	  <p>
-	    Starting with 2.0.6 .NET Core - or more precisely
-	    .NET Standard 1.3 - has become a supported platform. Please
-	    note that several features of log4net are not available
-	    when using the .NET Core version, see <a
-	    href="framework-support.html#netstandard-1.3">framework
-	    support</a> for details.
-	  </p>
-
-	  <section id="2.0.6-bug" name="Bug Fixes">
-              <ul>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-508'>LOG4NET-508</a>] -         NAnt release build is not optimized
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-512'>LOG4NET-512</a>] -         Thread safety issue in Hierarchy.cs
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-527'>LOG4NET-527</a>] -         broken link on config-examples.html
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-529'>LOG4NET-529</a>] -         Possible thread-safety bug in LoggingEvent
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-536'>LOG4NET-536</a>] -         Can&#39;t build for NETCF-2.0
-		</li>
-              </ul>
-	    </section>
-            <section id="2.0.6-enh" name="Improvements">
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-530'>LOG4NET-530</a>] -         Use UTC internally to avoid ambiguous timestamps
-                </li>
-              </ul>
+                <section id="2.0.8-new" name="New Features">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-553'>LOG4NET-553</a>] -
+                            DebugAppender
+                            configuration should give the possibility to disable outputting loggerName as category
+                        </li>
+                    </ul>
+                </section>
             </section>
 
-            <section id="2.0.6-new" name="New Features">
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-467'>LOG4NET-467</a>] -         Is .NET Core, will be supported in the near future, or not
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-511'>LOG4NET-511</a>] -         API to flush appenders
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-526'>LOG4NET-526</a>] -         Add appSetting conversion pattern to PatternString
-                </li>
-              </ul>
-	    </section>
-        </section>
+            <section id="2.0.7" name="2.0.7">
+                <p>
+                    Apache log4net 2.0.7 fixes a glitch in nuget packaging and
+                    is otherwise identical to 2.0.6 (apart from the copyright
+                    year and assembly version). If you are not using the nuget
+                    package there is no reason to upgrade.
+                </p>
 
-        <section id="1.2.15" name="1.2.15">
-            <section id="1.2.15-bug" name="Bug Fixes">
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-462'>LOG4NET-462</a>] -         ReadOnlyPropertiesDictionary not thread safe
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-488'>LOG4NET-488</a>] -         Fix tests build
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-489'>LOG4NET-489</a>] -         AdoNetAppender fails after upgrade to 2.0.4
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-490'>LOG4NET-490</a>] -         InterProcessLock Tests fail
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-493'>LOG4NET-493</a>] -         Log4net 1.2.14/ADO.NET appender throws exception when starting (1.2.13 with same config works fine)
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-494'>LOG4NET-494</a>] -         ArgumentOutOfRange with SQLite
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-495'>LOG4NET-495</a>] -         Error when BufferSize is &gt;1, parameter already defined
-                </li>
-              </ul>
-	    </section>
-          </section>
-
-          <section id="1.2.14" name="1.2.14">
-            <section id="1.2.14-bug" name="Bug Fixes">
-              <ul>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-408'>LOG4NET-408</a>] -         Correction on InterProcessLock
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-443'>LOG4NET-443</a>] -         Logger.CallAppenders
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-447'>LOG4NET-447</a>] -         MemoryAppender class is not thread safe
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-455'>LOG4NET-455</a>] -         LogicalThreadContext does not flow correctly through async/await 
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-479'>LOG4NET-479</a>] -         Cannot compile log4net.vs2008
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-484'>LOG4NET-484</a>] -         System.ObjectDisposedException with FileAppender+InterProcessLock
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-485'>LOG4NET-485</a>] -         RollingFileAppender cannot be used by multiple process
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-486'>LOG4NET-486</a>] -         Rolling File Appender with &#39;maxSizeRollBackups&#39; and &#39;datePattern&#39; does not detect existing logs initially
-		</li>
-              </ul>
+                <section id="2.0.7-bug" name="Bug Fixes">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-540'>LOG4NET-540</a>] - nuget
+                            dependencies for .NET Standard leak into net46
+                        </li>
+                    </ul>
+                </section>
             </section>
 
-            <section id="1.2.14-enh" name="Improvements">
-              <ul>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-456'>LOG4NET-456</a>] -         Include debug symbol files in release  packages
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-457'>LOG4NET-457</a>] -         SMTP Appender should trim leading and trailing separators from address fields
-		</li>
-              </ul>
+            <section id="2.0.6" name="2.0.6">
+
+                <p>
+                    The Apache log4net team is now responsible for the nuget
+                    package, we've changed the version number of this release
+                    to align the version numbers. Release 2.0.6 is supposed to
+                    be compatible with 1.2.15.
+                </p>
+
+                <p>
+                    The binary distributions no longer contain assemblies
+                    built for the .NET Framework 1.x or Mono 1.x - you can
+                    build those yourself using the source distribution.
+                </p>
+
+                <p>
+                    Starting with 2.0.6 .NET Core - or more precisely
+                    .NET Standard 1.3 - has become a supported platform. Please
+                    note that several features of log4net are not available
+                    when using the .NET Core version, see <a
+                        href="framework-support.html#netstandard-1.3">framework
+                    support
+                </a> for details.
+                </p>
+
+                <section id="2.0.6-bug" name="Bug Fixes">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-508'>LOG4NET-508</a>] - NAnt release
+                            build is not optimized
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-512'>LOG4NET-512</a>] - Thread
+                            safety
+                            issue in Hierarchy.cs
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-527'>LOG4NET-527</a>] - broken link
+                            on
+                            config-examples.html
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-529'>LOG4NET-529</a>] - Possible
+                            thread-safety bug in LoggingEvent
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-536'>LOG4NET-536</a>] - Can&#39;t
+                            build
+                            for NETCF-2.0
+                        </li>
+                    </ul>
+                </section>
+                <section id="2.0.6-enh" name="Improvements">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-530'>LOG4NET-530</a>] - Use UTC
+                            internally to avoid ambiguous timestamps
+                        </li>
+                    </ul>
+                </section>
+
+                <section id="2.0.6-new" name="New Features">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-467'>LOG4NET-467</a>] - Is .NET
+                            Core,
+                            will be supported in the near future, or not
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-511'>LOG4NET-511</a>] - API to flush
+                            appenders
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-526'>LOG4NET-526</a>] - Add
+                            appSetting
+                            conversion pattern to PatternString
+                        </li>
+                    </ul>
+                </section>
             </section>
 
-            <section id="1.2.14-new" name="New Features">
-              <ul>
-	        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-473'>LOG4NET-473</a>] -         Option for file extension in SmtpPickupDirAppender
-	        </li>
-              </ul>
-	    </section>
-          </section>
-
-          <section id="1.2.13" name="1.2.13">
-
-            <section id="1.2.13-bug" name="Bug Fixes">
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-132'>LOG4NET-132</a>] -         Environment variables are mistakenly case sensitive on windows
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-376'>LOG4NET-376</a>] -         Race condition in AbsoluteTimeDateFormatter
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-393'>LOG4NET-393</a>] -         Using dynamic methods with log4net causes NullReferenceException in StackFrameItem
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-399'>LOG4NET-399</a>] -         Does not build for Compact Framework 2.0
-                </li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-404'>LOG4NET-404</a>] -         assemblies for .NET 3.5 are missing ILogExtensions
-		</li>
-		<li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-405'>LOG4NET-405</a>] -         SmtpAppender encoding changes
-		</li>
-              </ul>
-
-            </section>
-                
-            <section id="1.2.13-enh" name="Improvements">
-
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-394'>LOG4NET-394</a>] -         Lambda-based ILog-Extensions should catch errors
-                </li>
-              </ul>
-
-            </section>
-          </section>
-
-          <section id="1.2.12" name="1.2.12">
-
-            <p>
-              The binary distributions no longer contain assemblies
-              built for the Compact Framework 2.0 - you can build
-              those yourself using the source distribution.
-            </p>
-
-            <section id="1.2.12-bug" name="Bug Fixes">
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-148'>LOG4NET-148</a>] -         ThreadContext uses LocalDataStore to store ThreadSpecific data instead should be using  [ThreadStatic] variables.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-178'>LOG4NET-178</a>] -         Log4Net stops logging after appdomain recycle of ASP.NET2.0 application
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-202'>LOG4NET-202</a>] -         AdoNetAppenderParameter.Size Property is not optional
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-218'>LOG4NET-218</a>] -         Test StringFormatTest.TestFormatString fails
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-220'>LOG4NET-220</a>] -         multiple users overwrite existing log file when RollingFileAppender is rolling over date and minimal locking is used
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-228'>LOG4NET-228</a>] -         log4net.Util.HostName may throw System.Configuration.ConfigurationErrorsException in System.Net.Dns.GetHostName(). The exception should be ignored.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-266'>LOG4NET-266</a>] -         AdoNetAppender does not work on a IIS 7 website using Windows authentication 
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-277'>LOG4NET-277</a>] -         Registering a custom Object Renderer in configuration file
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-284'>LOG4NET-284</a>] -         In a multithreaded application, duplicate messages are output.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-294'>LOG4NET-294</a>] -         Exception rendering object type [System.OutOfMemoryException]
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-317'>LOG4NET-317</a>] -         LogicalThreadContext sometimes doesn&#39;t follow CallContext&#39;s logical thread  
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-322'>LOG4NET-322</a>] -         Conditional compilation symbols for .net4 Release
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-323'>LOG4NET-323</a>] -         AbsoluteTimeDateFormatter caches string representation of now too aggressively
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-331'>LOG4NET-331</a>] -         AdoNetAppender errors when writing Asp.net item when Request object is null
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-335'>LOG4NET-335</a>] -         Lost the ability to monitor changes to logger config files when you call ConfigureAndWatch multiple times with different Config File Names - worked fine on 1.2.10.0
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-341'>LOG4NET-341</a>] -         RemotingAppender Error
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-343'>LOG4NET-343</a>] -         ArgumentOutOfRangeException in log4net hierarchy on &quot;.&quot; logger name
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-347'>LOG4NET-347</a>] -         Log4net not working in an ASP.Net environment with medium trust
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-348'>LOG4NET-348</a>] -         System.IndexOutOfRangeException when StackFrameLevel is greater then StackFrames length
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-352'>LOG4NET-352</a>] -         CS0419 during build with Mono &gt;2.6
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-360'>LOG4NET-360</a>] -         EventLogAppender can corrupt the event log on Windows Vista and higher if the string is longer than 31839 bytes
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-361'>LOG4NET-361</a>] -         RollingLogFileAppender does not correctly initialize the backup index when style is date or composite
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-369'>LOG4NET-369</a>] -         preserveLogFileNameExtension is not considered when rolling over time after an application restart
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-370'>LOG4NET-370</a>] -         RemoteSyslogAppender doesn&#39;t properly handle newline in log message
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-371'>LOG4NET-371</a>] -         Log with formatting doesn&#39;t call custom renderers (IObjectRenderer)
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-375'>LOG4NET-375</a>] -         typo / misspelling in log message
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-378'>LOG4NET-378</a>] -         Rolling log file is overwritten when application is restarted
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-379'>LOG4NET-379</a>] -         NullReferenceException in FileAppender when file is not filled.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-382'>LOG4NET-382</a>] -         TargetInvocationException occurs because MESSAGE_SIZE fields in EventLogAppender are initialized in wrong order
-                </li>
-              </ul>
+            <section id="1.2.15" name="1.2.15">
+                <section id="1.2.15-bug" name="Bug Fixes">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-462'>LOG4NET-462</a>] -
+                            ReadOnlyPropertiesDictionary not thread safe
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-488'>LOG4NET-488</a>] - Fix tests
+                            build
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-489'>LOG4NET-489</a>] -
+                            AdoNetAppender
+                            fails after upgrade to 2.0.4
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-490'>LOG4NET-490</a>] -
+                            InterProcessLock
+                            Tests fail
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-493'>LOG4NET-493</a>] - Log4net
+                            1.2.14/ADO.NET appender throws exception when starting (1.2.13 with same config works fine)
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-494'>LOG4NET-494</a>] -
+                            ArgumentOutOfRange with SQLite
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-495'>LOG4NET-495</a>] - Error when
+                            BufferSize is &gt;1, parameter already defined
+                        </li>
+                    </ul>
+                </section>
             </section>
 
-            <section id="1.2.12-enh" name="Improvements">
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-222'>LOG4NET-222</a>] -         [PATCH] Improve AnsiColorTerminalAppender to support marking colors as Light
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-223'>LOG4NET-223</a>] -         [PATCH] Improve AnsiColorTerminalAppender to support marking colors as Light
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-232'>LOG4NET-232</a>] -         Use ReaderWriterLockSlim instead of ReaderWriterLock.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-259'>LOG4NET-259</a>] -         Log4Net does not create a new tab in Chainsaw
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-283'>LOG4NET-283</a>] -         OnlyOnceErrorHandler is not subclass-friendly
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-292'>LOG4NET-292</a>] -         Managed ColoredConsoleAppender for .NET2/Mono.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-315'>LOG4NET-315</a>] -         SmtpAppender - Add support for ignoring certificate errors
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-316'>LOG4NET-316</a>] -         Provide a Layout Pattern that is re-evaluated on each use
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-318'>LOG4NET-318</a>] -         log4net doesn&#39;t pass verification
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-334'>LOG4NET-334</a>] -         Appender Faill over 
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-354'>LOG4NET-354</a>] -         E-mail encoding configuration setting for SmtpAppender
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-362'>LOG4NET-362</a>] -         [PATCH] SystemInfo.AssemblyLocationInfo throws unhandled ArgumentException &quot;Absolute path required&quot; when exe is started via UNC path
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-386'>LOG4NET-386</a>] -         Can&#39;t access ThreadContext properties
-                </li>
-              </ul>
+            <section id="1.2.14" name="1.2.14">
+                <section id="1.2.14-bug" name="Bug Fixes">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-408'>LOG4NET-408</a>] - Correction
+                            on
+                            InterProcessLock
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-443'>LOG4NET-443</a>] -
+                            Logger.CallAppenders
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-447'>LOG4NET-447</a>] -
+                            MemoryAppender
+                            class is not thread safe
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-455'>LOG4NET-455</a>] -
+                            LogicalThreadContext does not flow correctly through async/await
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-479'>LOG4NET-479</a>] - Cannot
+                            compile
+                            log4net.vs2008
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-484'>LOG4NET-484</a>] -
+                            System.ObjectDisposedException with FileAppender+InterProcessLock
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-485'>LOG4NET-485</a>] -
+                            RollingFileAppender cannot be used by multiple process
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-486'>LOG4NET-486</a>] - Rolling File
+                            Appender with &#39;maxSizeRollBackups&#39; and &#39;datePattern&#39; does not detect
+                            existing
+                            logs initially
+                        </li>
+                    </ul>
+                </section>
+
+                <section id="1.2.14-enh" name="Improvements">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-456'>LOG4NET-456</a>] - Include
+                            debug
+                            symbol files in release packages
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-457'>LOG4NET-457</a>] - SMTP
+                            Appender
+                            should trim leading and trailing separators from address fields
+                        </li>
+                    </ul>
+                </section>
+
+                <section id="1.2.14-new" name="New Features">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-473'>LOG4NET-473</a>] - Option for
+                            file
+                            extension in SmtpPickupDirAppender
+                        </li>
+                    </ul>
+                </section>
             </section>
 
-            <section id="1.2.12-new" name="New Features">
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-290'>LOG4NET-290</a>] -         Add Lambda-based ILog-Extensions (embedded log.IsEnabled)
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-342'>LOG4NET-342</a>] -         Add a way to prevent silent failure
-                </li>
-              </ul>
-            </section>
-          </section>
+            <section id="1.2.13" name="1.2.13">
 
-          <section id="1.2.11" name="1.2.11">
-            <p>
-              log4net 1.2.11 is not only a bugfix release, it also
-              adds support for Microsoft&#xae; .NET 4.0 as well as the client profiles
-              of .NET 3.5 and .NET 4.0.
-            </p>
+                <section id="1.2.13-bug" name="Bug Fixes">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-132'>LOG4NET-132</a>] - Environment
+                            variables are mistakenly case sensitive on windows
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-376'>LOG4NET-376</a>] - Race
+                            condition
+                            in AbsoluteTimeDateFormatter
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-393'>LOG4NET-393</a>] - Using
+                            dynamic
+                            methods with log4net causes NullReferenceException in StackFrameItem
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-399'>LOG4NET-399</a>] - Does not
+                            build
+                            for Compact Framework 2.0
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-404'>LOG4NET-404</a>] - assemblies
+                            for
+                            .NET 3.5 are missing ILogExtensions
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-405'>LOG4NET-405</a>] - SmtpAppender
+                            encoding changes
+                        </li>
+                    </ul>
 
-            <p>
-              Starting with this release log4net uses a new strong
-              name key but we also provide a binary distribution using
-              the "old" strong name key of log4net 1.2.10 and earlier.
-              See <a href="faq.html#two-snks">the FAQ</a> for details.
-            </p>
+                </section>
 
-            <p>
-              The binary distributions no longer contain assemblies
-              built for the Compact Framework 1.0 or the Shared Source
-              CLI - you can build those yourself using the source
-              distribution.
-            </p>
+                <section id="1.2.13-enh" name="Improvements">
 
-            <section id="1.2.11-breaking" name="Breaking Changes">
-              <p>
-                The signature of
-                <code>ILoggerFactory.CreateLogger</code> has changed.
-              </p>
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-394'>LOG4NET-394</a>] - Lambda-based
+                            ILog-Extensions should catch errors
+                        </li>
+                    </ul>
+
+                </section>
             </section>
 
-            <section id="1.2.11-bug" name="Bug Fixes">
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-76'>LOG4NET-76</a>] -         TextWriterAdapter is not thread safe
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-79'>LOG4NET-79</a>] -         SecurityException thrown in LogicalThreadContextProperties GetProperties
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-81'>LOG4NET-81</a>] -         LoggerRepositorySkeleton&#39;s OnConfigurationChanged method always raises its event with EventArgs.Empty instead of passing through its EventArgs parameter.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-93'>LOG4NET-93</a>] -         Typos for node name in tutorial, excess quote, invalid XML
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-94'>LOG4NET-94</a>] -         Incorrect config file for ..\examples\net\1.0\Tutorials\ConsoleApp
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-95'>LOG4NET-95</a>] -         Level.CompareTo() may result a wrong Value -&gt; sorting of Levels does not work
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-113'>LOG4NET-113</a>] -         SystemInfo.GetTypeFromString() raises NotSupportedException
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-123'>LOG4NET-123</a>] -         EnvironmentPatternConverter does not expand User or System level environment variables under Windows
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-126'>LOG4NET-126</a>] -         Links on the log4net Examples page do not work, including the overview link explaining why the other links do not work
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-128'>LOG4NET-128</a>] -         Either documentation is incorrect or a bug in SmtpAppender
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-129'>LOG4NET-129</a>] -         EventLogAppender EventID parsing does not handle Active Properties properly
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-135'>LOG4NET-135</a>] -         Bad example code in documentation
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-137'>LOG4NET-137</a>] -         log4net.Filter.LevelMatchFilter does not work anymore
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-143'>LOG4NET-143</a>] -         Invalid Repository Config Uri composition from &quot;log4net.Config&quot; application setting
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-146'>LOG4NET-146</a>] -         System.NullReferenceException on FindAndRender object
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-158'>LOG4NET-158</a>] -         XMLConfigurator.ConfigureAndWatch() leaks resources if called multiple times
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-167'>LOG4NET-167</a>] -         ArrayOutOfBounds Exception in MemoryAppender.getEvents()
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-212'>LOG4NET-212</a>] -         Threading bug in the PatternConverter.cs
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-214'>LOG4NET-214</a>] -         EventLogAppender should also use config file to set EventId
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-215'>LOG4NET-215</a>] -         Exception on Convert for return %class{1} name
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-229'>LOG4NET-229</a>] -         Japanese characters get garbled with log4net.Layout.XmlLayoutSchemaLog4j 
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-241'>LOG4NET-241</a>] -         Issue tracking page does not link to project
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-242'>LOG4NET-242</a>] -         Download page does not have link to KEYS file
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-243'>LOG4NET-243</a>] -         broken link on http://logging.apache.org/log4net/release/example-apps.html
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-244'>LOG4NET-244</a>] -         SmtpAppender.To Property has incorrect delimiter
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-257'>LOG4NET-257</a>] -         Visual Studio 2010 .NET 4.0 Application does not copy log4net lib to bin directory
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-265'>LOG4NET-265</a>] -         RemoteFileAppender Tests fail on Windows 7
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-274'>LOG4NET-274</a>] -         log4net doesn&#39;t log when running a .Net 4.0 Windows application built in Release mode
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-297'>LOG4NET-297</a>] -         AppenderSkeleton.RequiresLayout docs and implementation don&#39;t match
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-300'>LOG4NET-300</a>] -         FilterTest doesn&#39;t compile for .Net 2.0
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-301'>LOG4NET-301</a>] -         Unit tests fail on a clean checkout on .NET 2.0 using NAnt
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-310'>LOG4NET-310</a>] -         EventLogAppender&#39;s ActivateOptions throws SecurityException on Vista/Win2k3 and later when not run as administrator
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-311'>LOG4NET-311</a>] -         MinimalLock and AppendToFile=false don&#39;t work together in trunk&#39;s FileAppender
-                </li>
-              </ul>
+            <section id="1.2.12" name="1.2.12">
+
+                <p>
+                    The binary distributions no longer contain assemblies
+                    built for the Compact Framework 2.0 - you can build
+                    those yourself using the source distribution.
+                </p>
+
+                <section id="1.2.12-bug" name="Bug Fixes">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-148'>LOG4NET-148</a>] -
+                            ThreadContext
+                            uses LocalDataStore to store ThreadSpecific data instead should be using [ThreadStatic]
+                            variables.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-178'>LOG4NET-178</a>] - Log4Net
+                            stops
+                            logging after appdomain recycle of ASP.NET2.0 application
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-202'>LOG4NET-202</a>] -
+                            AdoNetAppenderParameter.Size Property is not optional
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-218'>LOG4NET-218</a>] - Test
+                            StringFormatTest.TestFormatString fails
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-220'>LOG4NET-220</a>] - multiple
+                            users
+                            overwrite existing log file when RollingFileAppender is rolling over date and minimal
+                            locking is
+                            used
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-228'>LOG4NET-228</a>] -
+                            log4net.Util.HostName may throw System.Configuration.ConfigurationErrorsException in
+                            System.Net.Dns.GetHostName(). The exception should be ignored.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-266'>LOG4NET-266</a>] -
+                            AdoNetAppender
+                            does not work on a IIS 7 website using Windows authentication
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-277'>LOG4NET-277</a>] - Registering
+                            a
+                            custom Object Renderer in configuration file
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-284'>LOG4NET-284</a>] - In a
+                            multithreaded application, duplicate messages are output.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-294'>LOG4NET-294</a>] - Exception
+                            rendering object type [System.OutOfMemoryException]
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-317'>LOG4NET-317</a>] -
+                            LogicalThreadContext sometimes doesn&#39;t follow CallContext&#39;s logical thread
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-322'>LOG4NET-322</a>] - Conditional
+                            compilation symbols for .net4 Release
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-323'>LOG4NET-323</a>] -
+                            AbsoluteTimeDateFormatter caches string representation of now too aggressively
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-331'>LOG4NET-331</a>] -
+                            AdoNetAppender
+                            errors when writing Asp.net item when Request object is null
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-335'>LOG4NET-335</a>] - Lost the
+                            ability
+                            to monitor changes to logger config files when you call ConfigureAndWatch multiple times
+                            with
+                            different Config File Names - worked fine on 1.2.10.0
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-341'>LOG4NET-341</a>] -
+                            RemotingAppender
+                            Error
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-343'>LOG4NET-343</a>] -
+                            ArgumentOutOfRangeException in log4net hierarchy on &quot;.&quot; logger name
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-347'>LOG4NET-347</a>] - Log4net not
+                            working in an ASP.Net environment with medium trust
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-348'>LOG4NET-348</a>] -
+                            System.IndexOutOfRangeException when StackFrameLevel is greater then StackFrames length
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-352'>LOG4NET-352</a>] - CS0419
+                            during
+                            build with Mono &gt;2.6
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-360'>LOG4NET-360</a>] -
+                            EventLogAppender
+                            can corrupt the event log on Windows Vista and higher if the string is longer than 31839
+                            bytes
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-361'>LOG4NET-361</a>] -
+                            RollingLogFileAppender does not correctly initialize the backup index when style is date or
+                            composite
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-369'>LOG4NET-369</a>] -
+                            preserveLogFileNameExtension is not considered when rolling over time after an application
+                            restart
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-370'>LOG4NET-370</a>] -
+                            RemoteSyslogAppender doesn&#39;t properly handle newline in log message
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-371'>LOG4NET-371</a>] - Log with
+                            formatting doesn&#39;t call custom renderers (IObjectRenderer)
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-375'>LOG4NET-375</a>] - typo /
+                            misspelling in log message
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-378'>LOG4NET-378</a>] - Rolling log
+                            file
+                            is overwritten when application is restarted
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-379'>LOG4NET-379</a>] -
+                            NullReferenceException in FileAppender when file is not filled.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-382'>LOG4NET-382</a>] -
+                            TargetInvocationException occurs because MESSAGE_SIZE fields in EventLogAppender are
+                            initialized
+                            in wrong order
+                        </li>
+                    </ul>
+                </section>
+
+                <section id="1.2.12-enh" name="Improvements">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-222'>LOG4NET-222</a>] - [PATCH]
+                            Improve
+                            AnsiColorTerminalAppender to support marking colors as Light
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-223'>LOG4NET-223</a>] - [PATCH]
+                            Improve
+                            AnsiColorTerminalAppender to support marking colors as Light
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-232'>LOG4NET-232</a>] - Use
+                            ReaderWriterLockSlim instead of ReaderWriterLock.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-259'>LOG4NET-259</a>] - Log4Net does
+                            not
+                            create a new tab in Chainsaw
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-283'>LOG4NET-283</a>] -
+                            OnlyOnceErrorHandler is not subclass-friendly
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-292'>LOG4NET-292</a>] - Managed
+                            ColoredConsoleAppender for .NET2/Mono.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-315'>LOG4NET-315</a>] - SmtpAppender
+                            -
+                            Add support for ignoring certificate errors
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-316'>LOG4NET-316</a>] - Provide a
+                            Layout
+                            Pattern that is re-evaluated on each use
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-318'>LOG4NET-318</a>] - log4net
+                            doesn&#39;t
+                            pass verification
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-334'>LOG4NET-334</a>] - Appender
+                            Faill
+                            over
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-354'>LOG4NET-354</a>] - E-mail
+                            encoding
+                            configuration setting for SmtpAppender
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-362'>LOG4NET-362</a>] - [PATCH]
+                            SystemInfo.AssemblyLocationInfo throws unhandled ArgumentException &quot;Absolute path
+                            required&quot;
+                            when exe is started via UNC path
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-386'>LOG4NET-386</a>] - Can&#39;t
+                            access
+                            ThreadContext properties
+                        </li>
+                    </ul>
+                </section>
+
+                <section id="1.2.12-new" name="New Features">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-290'>LOG4NET-290</a>] - Add
+                            Lambda-based
+                            ILog-Extensions (embedded log.IsEnabled)
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-342'>LOG4NET-342</a>] - Add a way to
+                            prevent silent failure
+                        </li>
+                    </ul>
+                </section>
             </section>
 
-            <section id="1.2.11-enh" name="Improvements">
-              <ul>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-31'>LOG4NET-31</a>] -         Allow user to pass in additional parameters to &lt;converter&gt; node via some kind of &lt;property&gt; tag
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-38'>LOG4NET-38</a>] -         EventLogAppender: Add support for setting the Category on Event Log messages.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-66'>LOG4NET-66</a>] -         PreserveFileExtension with StaticFileName
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-77'>LOG4NET-77</a>] -         A small improvement of log4net.Layout.Pattern.ExceptionPatternConverter  - added &#39;Option&#39; propery support
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-88'>LOG4NET-88</a>] -         support .NET 2.0 connectionStrings configuration section
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-96'>LOG4NET-96</a>] -         Expose the Message, Exception, and ErrorCode properties of OnlyOnceErrorHandler.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-97'>LOG4NET-97</a>] -         Make Hierarchy&#39;s ILoggerFactory aware of the repository&#39;s LevelMap
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-98'>LOG4NET-98</a>] -         Update header comment in files to be compliant with new Apache header requirements: http://www.apache.org/legal/src-headers.html for 11/1/2006 deadline
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-100'>LOG4NET-100</a>] -         IPAddressConverter improvement for .NET 2 or .NET 3
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-106'>LOG4NET-106</a>] -         TraceAppender : Add switch to disable using logger name as trace category
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-112'>LOG4NET-112</a>] -         Add support to the UdpAppender for IP v6 remote addresses
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-131'>LOG4NET-131</a>] -         Add Cc and Bcc support to SmtpAppender
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-141'>LOG4NET-141</a>] -         Add CreateConnection method to AdoNetAppender to allow subclasses to have control of IDbConnection.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-153'>LOG4NET-153</a>] -         Make it easier to configure multiple appenders in code using BasicConfigurator
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-157'>LOG4NET-157</a>] -         FAQ for getting the fully-qualified name of a class
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-164'>LOG4NET-164</a>] -         using a named mutex for file appenders
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-170'>LOG4NET-170</a>] -         Documentation improvement re: fixing and active properties
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-246'>LOG4NET-246</a>] -         Make it possible to choose whether or not to watch configuration files specified using the &quot;log4net.Config&quot; appsetting key 
-                </li>
-              </ul>
-    
-            </section>
-            <section id="1.2.11-new" name="New Features">
-              <ul>
-                <li>The various static <code>Configure</code> methods of the <code>Configurator</code> classes now return collections of configuration messages rather than <code>void</code>.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-59'>LOG4NET-59</a>] -       add the ability to roll files based on universal time (UTC).
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-64'>LOG4NET-64</a>] -         add the ability to preserve the log file name extension when rolling the log file.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-87'>LOG4NET-87</a>] -         Support ASP.Net related PatternConverters to allow items from the HttpContext.Current.Session, Cache, Request, etc. to be captured.
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-92'>LOG4NET-92</a>] -         Build for Compact Framework 2.0
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-107'>LOG4NET-107</a>] -         Added ExceptionEvaluator
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-115'>LOG4NET-115</a>] -         Expand UserAppDataPath in filename
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-116'>LOG4NET-116</a>] -         allow smtp to ssl authenticate and with certificates.
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-154'>LOG4NET-154</a>] -         Add a StackTracePatternConverter to display method calls leading up to log message
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-155'>LOG4NET-155</a>] -         Add TimeEvaluator
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-168'>LOG4NET-168</a>] -         New property ReplyTo address for the SmtpAppender required
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-176'>LOG4NET-176</a>] -         Buildable with VS 2008 and .NET FW 3.5
-                </li>
-                <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-233'>LOG4NET-233</a>] -         Support .NET 4.0 including Client Profile
-                </li>
-                </li>
-              </ul>
-            </section>
+            <section id="1.2.11" name="1.2.11">
+                <p>
+                    log4net 1.2.11 is not only a bugfix release, it also
+                    adds support for Microsoft&#xae; .NET 4.0 as well as the client profiles
+                    of .NET 3.5 and .NET 4.0.
+                </p>
 
-          </section>
+                <p>
+                    Starting with this release log4net uses a new strong
+                    name key but we also provide a binary distribution using
+                    the "old" strong name key of log4net 1.2.10 and earlier.
+                    See <a href="faq.html#two-snks">the FAQ</a> for details.
+                </p>
+
+                <p>
+                    The binary distributions no longer contain assemblies
+                    built for the Compact Framework 1.0 or the Shared Source
+                    CLI - you can build those yourself using the source
+                    distribution.
+                </p>
+
+                <section id="1.2.11-breaking" name="Breaking Changes">
+                    <p>
+                        The signature of
+                        <code>ILoggerFactory.CreateLogger</code>
+                        has changed.
+                    </p>
+                </section>
+
+                <section id="1.2.11-bug" name="Bug Fixes">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-76'>LOG4NET-76</a>] -
+                            TextWriterAdapter
+                            is not thread safe
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-79'>LOG4NET-79</a>] -
+                            SecurityException
+                            thrown in LogicalThreadContextProperties GetProperties
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-81'>LOG4NET-81</a>] -
+                            LoggerRepositorySkeleton&#39;s OnConfigurationChanged method always raises its event with
+                            EventArgs.Empty instead of passing through its EventArgs parameter.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-93'>LOG4NET-93</a>] - Typos for node
+                            name in tutorial, excess quote, invalid XML
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-94'>LOG4NET-94</a>] - Incorrect
+                            config
+                            file for ..\examples\net\1.0\Tutorials\ConsoleApp
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-95'>LOG4NET-95</a>] -
+                            Level.CompareTo()
+                            may result a wrong Value -&gt; sorting of Levels does not work
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-113'>LOG4NET-113</a>] -
+                            SystemInfo.GetTypeFromString() raises NotSupportedException
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-123'>LOG4NET-123</a>] -
+                            EnvironmentPatternConverter does not expand User or System level environment variables under
+                            Windows
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-126'>LOG4NET-126</a>] - Links on the
+                            log4net Examples page do not work, including the overview link explaining why the other
+                            links do
+                            not work
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-128'>LOG4NET-128</a>] - Either
+                            documentation is incorrect or a bug in SmtpAppender
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-129'>LOG4NET-129</a>] -
+                            EventLogAppender
+                            EventID parsing does not handle Active Properties properly
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-135'>LOG4NET-135</a>] - Bad example
+                            code
+                            in documentation
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-137'>LOG4NET-137</a>] -
+                            log4net.Filter.LevelMatchFilter does not work anymore
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-143'>LOG4NET-143</a>] - Invalid
+                            Repository Config Uri composition from &quot;log4net.Config&quot; application setting
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-146'>LOG4NET-146</a>] -
+                            System.NullReferenceException on FindAndRender object
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-158'>LOG4NET-158</a>] -
+                            XMLConfigurator.ConfigureAndWatch() leaks resources if called multiple times
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-167'>LOG4NET-167</a>] -
+                            ArrayOutOfBounds
+                            Exception in MemoryAppender.getEvents()
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-212'>LOG4NET-212</a>] - Threading
+                            bug in
+                            the PatternConverter.cs
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-214'>LOG4NET-214</a>] -
+                            EventLogAppender
+                            should also use config file to set EventId
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-215'>LOG4NET-215</a>] - Exception on
+                            Convert for return %class{1} name
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-229'>LOG4NET-229</a>] - Japanese
+                            characters get garbled with log4net.Layout.XmlLayoutSchemaLog4j
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-241'>LOG4NET-241</a>] - Issue
+                            tracking
+                            page does not link to project
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-242'>LOG4NET-242</a>] - Download
+                            page
+                            does not have link to KEYS file
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-243'>LOG4NET-243</a>] - broken link
+                            on
+                            http://logging.apache.org/log4net/release/example-apps.html
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-244'>LOG4NET-244</a>] -
+                            SmtpAppender.To
+                            Property has incorrect delimiter
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-257'>LOG4NET-257</a>] - Visual
+                            Studio
+                            2010 .NET 4.0 Application does not copy log4net lib to bin directory
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-265'>LOG4NET-265</a>] -
+                            RemoteFileAppender Tests fail on Windows 7
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-274'>LOG4NET-274</a>] - log4net
+                            doesn&#39;t
+                            log when running a .Net 4.0 Windows application built in Release mode
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-297'>LOG4NET-297</a>] -
+                            AppenderSkeleton.RequiresLayout docs and implementation don&#39;t match
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-300'>LOG4NET-300</a>] - FilterTest
+                            doesn&#39;t
+                            compile for .Net 2.0
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-301'>LOG4NET-301</a>] - Unit tests
+                            fail
+                            on a clean checkout on .NET 2.0 using NAnt
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-310'>LOG4NET-310</a>] -
+                            EventLogAppender&#39;s
+                            ActivateOptions throws SecurityException on Vista/Win2k3 and later when not run as
+                            administrator
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-311'>LOG4NET-311</a>] - MinimalLock
+                            and
+                            AppendToFile=false don&#39;t work together in trunk&#39;s FileAppender
+                        </li>
+                    </ul>
+                </section>
+
+                <section id="1.2.11-enh" name="Improvements">
+                    <ul>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-31'>LOG4NET-31</a>] - Allow user to
+                            pass
+                            in additional parameters to &lt;converter&gt; node via some kind of &lt;property&gt; tag
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-38'>LOG4NET-38</a>] -
+                            EventLogAppender:
+                            Add support for setting the Category on Event Log messages.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-66'>LOG4NET-66</a>] -
+                            PreserveFileExtension with StaticFileName
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-77'>LOG4NET-77</a>] - A small
+                            improvement of log4net.Layout.Pattern.ExceptionPatternConverter - added &#39;Option&#39;
+                            propery
+                            support
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-88'>LOG4NET-88</a>] - support .NET
+                            2.0
+                            connectionStrings configuration section
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-96'>LOG4NET-96</a>] - Expose the
+                            Message, Exception, and ErrorCode properties of OnlyOnceErrorHandler.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-97'>LOG4NET-97</a>] - Make Hierarchy&#39;s
+                            ILoggerFactory aware of the repository&#39;s LevelMap
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-98'>LOG4NET-98</a>] - Update header
+                            comment in files to be compliant with new Apache header requirements:
+                            http://www.apache.org/legal/src-headers.html for 11/1/2006 deadline
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-100'>LOG4NET-100</a>] -
+                            IPAddressConverter improvement for .NET 2 or .NET 3
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-106'>LOG4NET-106</a>] -
+                            TraceAppender :
+                            Add switch to disable using logger name as trace category
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-112'>LOG4NET-112</a>] - Add support
+                            to
+                            the UdpAppender for IP v6 remote addresses
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-131'>LOG4NET-131</a>] - Add Cc and
+                            Bcc
+                            support to SmtpAppender
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-141'>LOG4NET-141</a>] - Add
+                            CreateConnection method to AdoNetAppender to allow subclasses to have control of
+                            IDbConnection.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-153'>LOG4NET-153</a>] - Make it
+                            easier
+                            to configure multiple appenders in code using BasicConfigurator
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-157'>LOG4NET-157</a>] - FAQ for
+                            getting
+                            the fully-qualified name of a class
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-164'>LOG4NET-164</a>] - using a
+                            named
+                            mutex for file appenders
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-170'>LOG4NET-170</a>] -
+                            Documentation
+                            improvement re: fixing and active properties
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-246'>LOG4NET-246</a>] - Make it
+                            possible
+                            to choose whether or not to watch configuration files specified using the &quot;log4net.Config&quot;
+                            appsetting key
+                        </li>
+                    </ul>
+
+                </section>
+                <section id="1.2.11-new" name="New Features">
+                    <ul>
+                        <li>The various static <code>Configure</code> methods of the <code>Configurator</code> classes
+                            now
+                            return collections of configuration messages rather than <code>void</code>.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-59'>LOG4NET-59</a>] - add the
+                            ability to
+                            roll files based on universal time (UTC).
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-64'>LOG4NET-64</a>] - add the
+                            ability to
+                            preserve the log file name extension when rolling the log file.
+                        </li>
+                        <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-87'>LOG4NET-87</a>] - Support
+                            ASP.Net
+                            related PatternConverters to allow items from the HttpContext.Current.Session, Cache,
+                            Request,
+                            etc. to be captured.
+                            <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-92'>LOG4NET-92</a>] - Build for
+                                Compact Framework 2.0
+                            </li>
+                            <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-107'>LOG4NET-107</a>] - Added
+                                ExceptionEvaluator
+                            </li>
+                            <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-115'>LOG4NET-115</a>] - Expand
+                                UserAppDataPath in filename
+                            </li>
+                            <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-116'>LOG4NET-116</a>] - allow
+                                smtp
+                                to ssl authenticate and with certificates.
+                            </li>
+                            <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-154'>LOG4NET-154</a>] - Add a
+                                StackTracePatternConverter to display method calls leading up to log message
+                            </li>
+                            <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-155'>LOG4NET-155</a>] - Add
+                                TimeEvaluator
+                            </li>
+                            <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-168'>LOG4NET-168</a>] - New
+                                property
+                                ReplyTo address for the SmtpAppender required
+                            </li>
+                            <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-176'>LOG4NET-176</a>] -
+                                Buildable
+                                with VS 2008 and .NET FW 3.5
+                            </li>
+                            <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-233'>LOG4NET-233</a>] - Support
+                                .NET
+                                4.0 including Client Profile
+                            </li>
+                        </li>
+                    </ul>
+                </section>
+
+            </section>
 
             <section id="1.2.10" name="1.2.10">
 
                 <section id="1.2.10-bug" name="Bug Fixes">
                     <ul>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-21'>LOG4NET-21</a>] - RemotingAppender fails once NDC becomes empty</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-22'>LOG4NET-22</a>] - XmlLayout allows output of invalid control characters</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-23'>LOG4NET-23</a>] - example-apps.html links are off by one folder level</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-25'>LOG4NET-25</a>] - RollingFileAppender can fail if RollOverIfDateBoundaryCrossing required</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-28'>LOG4NET-28</a>] - AdoNetAppender does not support inserting NULL into columns</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-29'>LOG4NET-29</a>] - LevelMatchFilter should return Neutral when no match is found</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-32'>LOG4NET-32</a>] - AdoNetAppender losing first entry</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-35'>LOG4NET-35</a>] - Exception rendering ThreadContextStack if null value pushed into stack</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-36'>LOG4NET-36</a>] - System.Diagnostics.Trace may throw exception if AppDomain does not have config file</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-40'>LOG4NET-40</a>] - RollingFileAppender does not limit files to MaxSizeRollBackups when CountDirection is 1</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-41'>LOG4NET-41</a>] - RollingFileAppender roll over date fail</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-42'>LOG4NET-42</a>] - Serialised LoggingEvent does not preserve the Fix flags</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-43'>LOG4NET-43</a>] - Specifying an empty string as a property in the config file results in an error</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-44'>LOG4NET-44</a>] - XmlLayout emits all properties under a node named global-properties, rather than just properties.</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-49'>LOG4NET-49</a>] - CountingQuietTextWriter does not count strings written with WriteLine</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-50'>LOG4NET-50</a>] - Process.StartTime hangs on some systems</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-60'>LOG4NET-60</a>] - Bug in RollingFileAppender.cs causing failure to timely roll files on monthly interval</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-63'>LOG4NET-63</a>] - 1.2.9.0 Documentation typos</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-65'>LOG4NET-65</a>] - Unhandled SecurityException exception for FileIOPermission while loading configuration file</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-67'>LOG4NET-67</a>] - CVE-2006-0743 Security vulnerability in LocalSyslogAppender</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-69'>LOG4NET-69</a>] - Exception thrown when *Format methods are given a malformed format string</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-70'>LOG4NET-70</a>] - CoreDll.dll referenced with different capitalisation</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-73'>LOG4NET-73</a>] - ADONetAppender.ActivateOptions() leaks database connection when called multiple times</li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-21'>LOG4NET-21</a>] -
+                            RemotingAppender
+                            fails once NDC becomes empty
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-22'>LOG4NET-22</a>] - XmlLayout
+                            allows
+                            output of invalid control characters
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-23'>LOG4NET-23</a>] -
+                            example-apps.html
+                            links are off by one folder level
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-25'>LOG4NET-25</a>] -
+                            RollingFileAppender
+                            can fail if RollOverIfDateBoundaryCrossing required
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-28'>LOG4NET-28</a>] - AdoNetAppender
+                            does
+                            not support inserting NULL into columns
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-29'>LOG4NET-29</a>] -
+                            LevelMatchFilter
+                            should return Neutral when no match is found
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-32'>LOG4NET-32</a>] - AdoNetAppender
+                            losing first entry
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-35'>LOG4NET-35</a>] - Exception
+                            rendering
+                            ThreadContextStack if null value pushed into stack
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-36'>LOG4NET-36</a>] -
+                            System.Diagnostics.Trace may throw exception if AppDomain does not have config file
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-40'>LOG4NET-40</a>] -
+                            RollingFileAppender
+                            does not limit files to MaxSizeRollBackups when CountDirection is 1
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-41'>LOG4NET-41</a>] -
+                            RollingFileAppender
+                            roll over date fail
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-42'>LOG4NET-42</a>] - Serialised
+                            LoggingEvent does not preserve the Fix flags
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-43'>LOG4NET-43</a>] - Specifying an
+                            empty
+                            string as a property in the config file results in an error
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-44'>LOG4NET-44</a>] - XmlLayout emits
+                            all
+                            properties under a node named global-properties, rather than just properties.
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-49'>LOG4NET-49</a>] -
+                            CountingQuietTextWriter does not count strings written with WriteLine
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-50'>LOG4NET-50</a>] -
+                            Process.StartTime
+                            hangs on some systems
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-60'>LOG4NET-60</a>] - Bug in
+                            RollingFileAppender.cs causing failure to timely roll files on monthly interval
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-63'>LOG4NET-63</a>] - 1.2.9.0
+                            Documentation typos
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-65'>LOG4NET-65</a>] - Unhandled
+                            SecurityException exception for FileIOPermission while loading configuration file
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-67'>LOG4NET-67</a>] - CVE-2006-0743
+                            Security vulnerability in LocalSyslogAppender
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-69'>LOG4NET-69</a>] - Exception
+                            thrown
+                            when *Format methods are given a malformed format string
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-70'>LOG4NET-70</a>] - CoreDll.dll
+                            referenced with different capitalisation
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-73'>LOG4NET-73</a>] -
+                            ADONetAppender.ActivateOptions() leaks database connection when called multiple times
+                        </li>
                     </ul>
                 </section>
-                    
+
                 <section id="1.2.10-new" name="New Features">
                     <ul>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-11'>LOG4NET-11</a>] - Add Flush command to API</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-24'>LOG4NET-24</a>] - Programmatic flush of BufferingAppenderSkeleton buffer</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-37'>LOG4NET-37</a>] - Allow the RepositorySelector type to be specified using the AppSettings config</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-46'>LOG4NET-46</a>] - Support appenders that can output multiple events efficiently</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-51'>LOG4NET-51</a>] - WmiAppender</li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-11'>LOG4NET-11</a>] - Add Flush
+                            command
+                            to API
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-24'>LOG4NET-24</a>] - Programmatic
+                            flush
+                            of BufferingAppenderSkeleton buffer
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-37'>LOG4NET-37</a>] - Allow the
+                            RepositorySelector type to be specified using the AppSettings config
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-46'>LOG4NET-46</a>] - Support
+                            appenders
+                            that can output multiple events efficiently
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-51'>LOG4NET-51</a>] - WmiAppender
+                        </li>
                     </ul>
                 </section>
-                        
+
                 <section id="1.2.10-enh" name="Improvements">
                     <ul>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-3'>LOG4NET-3</a>] - Support per event patterns in FileAppender File name</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-13'>LOG4NET-13</a>] - Allow SMTPAppender to have replaceable parameters in Subject</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-15'>LOG4NET-15</a>] - Email high "importance" priority setting with SmtpAppender</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-17'>LOG4NET-17</a>] - Line-wrapping Appender Layouts</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-33'>LOG4NET-33</a>] - Ability to use global property to point to log4net configuration file</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-34'>LOG4NET-34</a>] - Allow xml config values to be set via XmlNodeType.CDATA or XmlNodeType.Text rather than just value="foo"</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-45'>LOG4NET-45</a>] - PluginAttribute does not allow plugin type to be specified as a Type, only as a string</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-52'>LOG4NET-52</a>] - Allow XML configurator to set properties of type Object</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-53'>LOG4NET-53</a>] - Allow repository properties to be set in the config file</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-56'>LOG4NET-56</a>] - Support rendering IEnumerator objects as well as ICollections</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-58'>LOG4NET-58</a>] - Support clean build on .NET 2.0</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-72'>LOG4NET-72</a>] - Performance of ILog.xxxFormat methods</li>
-                    <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-74'>LOG4NET-74</a>] - Change MemoryAppender member variables to protected</li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-3'>LOG4NET-3</a>] - Support per event
+                            patterns in FileAppender File name
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-13'>LOG4NET-13</a>] - Allow
+                            SMTPAppender
+                            to have replaceable parameters in Subject
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-15'>LOG4NET-15</a>] - Email high
+                            "importance" priority setting with SmtpAppender
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-17'>LOG4NET-17</a>] - Line-wrapping
+                            Appender Layouts
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-33'>LOG4NET-33</a>] - Ability to use
+                            global property to point to log4net configuration file
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-34'>LOG4NET-34</a>] - Allow xml
+                            config
+                            values to be set via XmlNodeType.CDATA or XmlNodeType.Text rather than just value="foo"
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-45'>LOG4NET-45</a>] - PluginAttribute
+                            does not allow plugin type to be specified as a Type, only as a string
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-52'>LOG4NET-52</a>] - Allow XML
+                            configurator to set properties of type Object
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-53'>LOG4NET-53</a>] - Allow
+                            repository
+                            properties to be set in the config file
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-56'>LOG4NET-56</a>] - Support
+                            rendering
+                            IEnumerator objects as well as ICollections
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-58'>LOG4NET-58</a>] - Support clean
+                            build
+                            on .NET 2.0
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-72'>LOG4NET-72</a>] - Performance of
+                            ILog.xxxFormat methods
+                        </li>
+                        <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-74'>LOG4NET-74</a>] - Change
+                            MemoryAppender member variables to protected
+                        </li>
                     </ul>
                 </section>
 
             </section>
 
             <section id="1.2.9" name="1.2.9 Beta">
-            
+
                 <section id="1.2.9-breaking" name="Breaking Changes">
-                            <h3>Renamed namespaces</h3>
-                            <p>
-                                Renamed namespace <span class="code">log4net.spi</span> to <span class="code">log4net.Core</span>. 
-                                Renamed namespace <span class="code">log4net.helpers</span> to <span class="code">log4net.Util</span>.
-                            </p>
-                            <h3>Renamed config classes and attributes</h3>
-                            <p>
-                                In the <span class="code">log4net.Config</span> namespace the <span class="code">DOMConfigurator</span>, 
-                                <span class="code">DOMConfiguratorAttribute</span>, <span class="code">DomainAttribute</span>, 
-                                and <span class="code">AliasDomainAttribute</span> have been marked as obsolete. These types are
-                                still available and functional in this release.
-                            </p>
-                            <p>    
-                                The <span class="code">XmlConfigurator</span> and <span class="code">XmlConfiguratorAttribute</span> 
-                                types replace <span class="code">DOMConfigurator</span> and 
-                                <span class="code">DOMConfiguratorAttribute</span>. The <span class="code">RepositoryAttribute</span> 
-                                and <span class="code">AliasRepositoryAttribute</span> types replace 
-                                <span class="code">DomainAttribute</span> and <span class="code">AliasDomainAttribute</span>. 
-                            </p>
-                            <h3>Fixed pascal casing of type names</h3>
-                            <p>
-                                Renamed <span class="code">AdoNetAppender</span>, <span class="code">AspNetTraceAppender</span>, 
-                                <span class="code">SmtpAppender</span>, <span class="code">Iso8601DateFormatter</span>, 
-                                <span class="code">MdcFilter</span>, and <span class="code">NdcFilter</span>.
-                                Note that the config file type resolver is case insensitive so this is only a breaking change 
-                                for code that programmatically creates a type that has been renamed.
-                            </p>
-                            <h3>Layouts changed to stream their output to a <span class="code">TextWriter</span></h3>
-                            <p>
-                                Layouts have been changed to format their output to a <span class="code">TextWriter</span>
-                                rather than return a string. This increases performance and reduces temporary object creation.
-                            </p>
-                            <h3>C style string escapes no longer supported by config parser</h3>
-                            <p>
-                                The XML config parser no longer supports decoding C style escape sequences in strings.
-                                Previously sequences like <span class="code">\n</span> and <span class="code">\\</span> 
-                                where decoded. Instead use the appropriate XML encodings as required.
-                            </p>
+                    <h3>Renamed namespaces</h3>
+                    <p>
+                        Renamed namespace <span class="code">log4net.spi</span> to <span class="code">
+                        log4net.Core</span>.
+                        Renamed namespace <span class="code">log4net.helpers</span> to <span class="code">
+                        log4net.Util</span>.
+                    </p>
+                    <h3>Renamed config classes and attributes</h3>
+                    <p>
+                        In the <span class="code">log4net.Config</span> namespace the <span class="code">
+                        DOMConfigurator</span>,
+                        <span class="code">DOMConfiguratorAttribute</span>, <span class="code">DomainAttribute</span>,
+                        and <span class="code">AliasDomainAttribute</span> have been marked as obsolete. These types are
+                        still available and functional in this release.
+                    </p>
+                    <p>
+                        The <span class="code">XmlConfigurator</span> and
+                        <span class="code">XmlConfiguratorAttribute</span>
+                        types replace <span class="code">DOMConfigurator</span> and
+                        <span class="code">DOMConfiguratorAttribute</span>. The
+                        <span class="code">RepositoryAttribute</span>
+                        and <span class="code">AliasRepositoryAttribute</span> types replace
+                        <span class="code">DomainAttribute</span>
+                        and <span class="code">AliasDomainAttribute</span>.
+                    </p>
+                    <h3>Fixed pascal casing of type names</h3>
+                    <p>
+                        Renamed <span class="code">AdoNetAppender</span>, <span class="code">AspNetTraceAppender</span>,
+                        <span class="code">SmtpAppender</span>, <span class="code">Iso8601DateFormatter</span>,
+                        <span class="code">MdcFilter</span>, and <span class="code">NdcFilter</span>.
+                        Note that the config file type resolver is case insensitive so this is only a breaking change
+                        for code that programmatically creates a type that has been renamed.
+                    </p>
+                    <h3>Layouts changed to stream their output to a
+                        <span class="code">TextWriter</span>
+                    </h3>
+                    <p>
+                        Layouts have been changed to format their output to a
+                        <span class="code">TextWriter</span>
+                        rather than return a string. This increases performance and reduces temporary object creation.
+                    </p>
+                    <h3>C style string escapes no longer supported by config parser</h3>
+                    <p>
+                        The XML config parser no longer supports decoding C style escape sequences in strings.
+                        Previously sequences like <span class="code">\n</span> and
+                        <span class="code">\\</span>
+                        where decoded. Instead use the appropriate XML encodings as required.
+                    </p>
                 </section>
-                
+
                 <section id="1.2.9-new" name="New Features">
-                            <h3>New CLI build</h3>
-                            <p>
-                                A new log4net assembly is built that targets all CLI 1.0 compatible runtimes.
-                                This build is essentially a common subset of the Mono 1.0 and .NET 1.0 builds.
-                                It is built using the MS .NET 1.0 compiler and libraries but does not use any
-                                platform specific APIs.
-                            </p>
-                            <p>
-                                This build is only available in release configuration and can be found at
-                                <span class="code">bin\cli\1.0\release</span>.
-                            </p>
-                            <h3>Logging contexts</h3>
-                            <p>
-                                Logging contexts can be used to record contextual data that is relevant to the current
-                                process. Logging contexts are both an extension of the concepts embodied in the
-                                <span class="code">MDC</span> and <span class="code">NDC</span> and a replacement for
-                                them. The <span class="code">MDC</span> and <span class="code">NDC</span> have been
-                                reimplemented to use the <span class="code">ThreadContext</span> as storage.
-                            </p>
-                            <p>
-                                The logging contexts provide a single unified view that cuts across different
-                                scopes within an application.
-                                The contexts are layered in the following order of narrowing scope: 
-                                <span class="code">GlobalContext</span>, <span class="code">ThreadContext</span>, 
-                                <span class="code">LogicalThreadContext</span>, and <span class="code">LoggingEvent</span>.
-                                Context values specified in a narrower scope hide the matching value in a wider scope.
-                            </p>
-                            <h3><span class="code">PatternLayout</span> customization and long pattern names</h3>
-                            <p>
-                                The <span class="code">PatternLayout</span> now supports long pattern names.
-                                These pattern names are significantly more readable than the single character patterns.
-                            </p>
-                            <p>
-                                The <span class="code">PatternLayout</span> now supports custom patterns. New patterns
-                                can be defined in the config file:
-                            </p>
-                            <div class="syntax"><pre class="code">
-&lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
+                    <h3>New CLI build</h3>
+                    <p>
+                        A new log4net assembly is built that targets all CLI 1.0 compatible runtimes.
+                        This build is essentially a common subset of the Mono 1.0 and .NET 1.0 builds.
+                        It is built using the MS .NET 1.0 compiler and libraries but does not use any
+                        platform specific APIs.
+                    </p>
+                    <p>
+                        This build is only available in release configuration and can be found at
+                        <span class="code">bin\cli\1.0\release</span>.
+                    </p>
+                    <h3>Logging contexts</h3>
+                    <p>
+                        Logging contexts can be used to record contextual data that is relevant to the current
+                        process. Logging contexts are both an extension of the concepts embodied in the
+                        <span class="code">MDC</span>
+                        and <span class="code">NDC</span> and a replacement for
+                        them. The <span class="code">MDC</span> and <span class="code">NDC</span> have been
+                        reimplemented to use the <span class="code">ThreadContext</span> as storage.
+                    </p>
+                    <p>
+                        The logging contexts provide a single unified view that cuts across different
+                        scopes within an application.
+                        The contexts are layered in the following order of narrowing scope:
+                        <span class="code">GlobalContext</span>, <span class="code">ThreadContext</span>,
+                        <span class="code">LogicalThreadContext</span>, and <span class="code">LoggingEvent</span>.
+                        Context values specified in a narrower scope hide the matching value in a wider scope.
+                    </p>
+                    <h3>
+                        <span class="code">PatternLayout</span>
+                        customization and long pattern names
+                    </h3>
+                    <p>
+                        The <span class="code">PatternLayout</span> now supports long pattern names.
+                        These pattern names are significantly more readable than the single character patterns.
+                    </p>
+                    <p>
+                        The <span class="code">PatternLayout</span> now supports custom patterns. New patterns
+                        can be defined in the config file:
+                    </p>
+                    <div class="syntax">
+                        <pre class="code">
+                            &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
 
-  &lt;converter&gt;
-    &lt;name value=&quot;myConverter&quot; /&gt;
-    &lt;type value=&quot;TestApp.MyPatternConverter, TestApp&quot; /&gt;
-  &lt;/converter&gt;
+                            &lt;converter&gt;
+                            &lt;name value=&quot;myConverter&quot; /&gt;
+                            &lt;type value=&quot;TestApp.MyPatternConverter, TestApp&quot; /&gt;
+                            &lt;/converter&gt;
 
-  &lt;conversionPattern value=&quot;%-5level %logger - %myConverter - %message%newline&quot; /&gt;
-&lt;/layout&gt;</pre></div>
-                            <p>
-                                The above config defines a custom pattern called <span class="code">myConverter</span>
-                                which is bound to the <span class="code">TestApp.MyPatternConverter, TestApp</span>
-                                type. This type must extend the <span class="code">log4net.Util.PatternConverter</span>
-                                base class. The custom pattern can then be used in the pattern string.
-                            </p>
-                            <p>
-                                For full details see the SDK Reference entry: <a href="sdk/html/T_log4net_Layout_PatternLayout.htm">log4net.Layout.PatternLayout</a>.
-                            </p>
-                            <h3><span class="code">PatternString</span> for pattern based configuration</h3>
-                            <p>
-                                A new pattern based type, <span class="code">PatternString</span>, can be used in
-                                the config file to set string properties using a pattern syntax. For example the
-                                File property of the FileAppender could be set as follows:
-                            </p>
-                            <div class="syntax"><pre class="code">
-&lt;file type=&quot;log4net.Util.PatternString&quot;&gt;
+                            &lt;conversionPattern value=&quot;%-5level %logger - %myConverter - %message%newline&quot; /&gt;
+                            &lt;/layout&gt;
+                        </pre>
+                    </div>
+                    <p>
+                        The above config defines a custom pattern called
+                        <span class="code">myConverter</span>
+                        which is bound to the
+                        <span class="code">TestApp.MyPatternConverter, TestApp</span>
+                        type. This type must extend the
+                        <span class="code">log4net.Util.PatternConverter</span>
+                        base class. The custom pattern can then be used in the pattern string.
+                    </p>
+                    <p>
+                        For full details see the SDK Reference entry: <a
+                            href="sdk/html/T_log4net_Layout_PatternLayout.htm">
+                        log4net.Layout.PatternLayout</a>.
+                    </p>
+                    <h3>
+                        <span class="code">PatternString</span>
+                        for pattern based configuration
+                    </h3>
+                    <p>
+                        A new pattern based type, <span class="code">PatternString</span>, can be used in
+                        the config file to set string properties using a pattern syntax. For example the
+                        File property of the FileAppender could be set as follows:
+                    </p>
+                    <div class="syntax">
+                        <pre class="code">
+                            &lt;file type=&quot;log4net.Util.PatternString&quot;&gt;
 
-  &lt;converter&gt;
-    &lt;name value=&quot;folder&quot; /&gt;
-    &lt;type value=&quot;TestApp.SpecialFolderPatternConverter,TestApp&quot; /&gt;
-  &lt;/converter&gt;
+                            &lt;converter&gt;
+                            &lt;name value=&quot;folder&quot; /&gt;
+                            &lt;type value=&quot;TestApp.SpecialFolderPatternConverter,TestApp&quot; /&gt;
+                            &lt;/converter&gt;
 
-  &lt;conversionPattern value=&quot;%folder{LocalApplicationData}\log-file.txt&quot; /&gt;
-&lt;/file&gt;</pre></div>
+                            &lt;conversionPattern value=&quot;%folder{LocalApplicationData}\log-file.txt&quot; /&gt;
+                            &lt;/file&gt;
+                        </pre>
+                    </div>
+                    <p>
+                        The code for the
+                        <span class="code">SpecialFolderPatternConverter</span>
+                        is as follows:
+                    </p>
+                    <div class="syntax">
+                        <pre class="code">
+                            public class SpecialFolderPatternConverter : log4net.Util.PatternConverter
+                            {
+                            override protected void Convert(System.IO.TextWriter writer, object state)
+                            {
+                            Environment.SpecialFolder specialFolder =
+                            (Environment.SpecialFolder)Enum.Parse(typeof(Environment.SpecialFolder), base.Option, true);
+
+                            writer.Write(Environment.GetFolderPath(specialFolder));
+                            }
+                            }
+                        </pre>
+                    </div>
+                    <p>
+                        For full details see the SDK Reference entry: <a
+                            href="sdk/html/T_log4net_Util_PatternString_htm">
+                        log4net.Util.PatternString</a>.
+                    </p>
+                    <h3>Loading configuration from a URI</h3>
+                    <p>
+                        The <span class="code">XmlConfigurator</span> methods now support loading the
+                        configuration data from a URI. Config can be loaded from any URI supported by the
+                        <span class="code">System.Net.WebRequest</span>
+                        class.
+                    </p>
+                    <h3>Support for No-Touch deployment</h3>
+                    <p>
+                        Log4net supports configuring No-Touch deployment applications using the
+                        <span class="code">XmlConfiguratorAttribute</span>. If a relative config file
+                        or extension is specified then this is resolved relative to the deployment
+                        URI.
+                    </p>
+                    <h3>Config file parser enhancements</h3>
+                    <p>
+                        The config file parser has been enhanced to support specifying the property subtype, or
+                        intermediate
+                        type,
+                        directly on the property element, for example:
+                    </p>
+                    <div class="syntax">
+                        <pre class="code">
+                            &lt;layout type=&quot;log4net.Layout.PatternLayout&quot; value=&quot;%message%newline&quot;
+                            /&gt;
+                        </pre>
+                    </div>
+                    <p>
+                        Implicit conversion will be attempted between the value string and the type specified,
+                        and then again between the type and the target property type.
+                    </p>
+                    <h3>.NET string formatting syntax</h3>
+                    <p>
+                        Added .NET <span class="code">String.Format</span> style formatting syntax methods to
+                        the <span class="code">ILog</span> interface. The new methods are:
+                        <span class="code">DebugFormat</span>, <span class="code">InfoFormat</span>,
+                        <span class="code">WarnFormat</span>,
+                        <span class="code">ErrorFormat</span>
+                        and <span class="code">FatalFormat</span>.
+                    </p>
+                    <h3>Customizable levels</h3>
+                    <p>
+                        Levels are defined by the repository <span class="code">LevelMap</span>. The defined
+                        levels, the relative ordering of levels and level display names can be configured on
+                        a per-repository basis.
+                    </p>
+                    <h3>Per-appender security contexts</h3>
+                    <p>
+                        Appenders that interact with controlled platform resources, e.g. files, can be
+                        configured to use a separate security context when accessing these resources.
+                        The calling thread may not have appropriate privileges to access the resource a
+                        custom <span class="code">SecurityContext</span> can be used to elevate the
+                        privileges of the appender. The
+                        <span class="code">WindowsSecurityContext</span>
+                        is used to specify alternative credentials on the Windows platform.
+                    </p>
+                    <h3>Added new appenders</h3>
+                    <dl>
+                        <dt>
+                            <span class="code">AnsiColorTerminalAppender</span>
+                        </dt>
+                        <dd>
                             <p>
-                                The code for the <span class="code">SpecialFolderPatternConverter</span>
-                                is as follows:
-                            </p>            
-                            <div class="syntax"><pre class="code">
-public class SpecialFolderPatternConverter : log4net.Util.PatternConverter 
-{
-  override protected void Convert(System.IO.TextWriter writer, object state) 
-  {
-    Environment.SpecialFolder specialFolder = 
-      (Environment.SpecialFolder)Enum.Parse(typeof(Environment.SpecialFolder), base.Option, true);
-      
-    writer.Write(Environment.GetFolderPath(specialFolder));
-  }
-}</pre></div>
-                            <p>
-                                For full details see the SDK Reference entry: <a href="sdk/html/T_log4net_Util_PatternString_htm">log4net.Util.PatternString</a>.
+                                The <span class="code">AnsiColorTerminalAppender</span> writes events to
+                                the application's ANSI terminal window. It can be configured to specify
+                                the text and background colors for different level events. Note that Console
+                                applications running on Windows do not have an ANSI terminal window and
+                                should use the <span class="code">ColoredConsoleAppender</span> instead.
                             </p>
-                            <h3>Loading configuration from a URI</h3>
+                        </dd>
+                        <dt>
+                            <span class="code">LocalSyslogAppender</span>
+                        </dt>
+                        <dd>
                             <p>
-                                The <span class="code">XmlConfigurator</span> methods now support loading the
-                                configuration data from a URI. Config can be loaded from any URI supported by the 
-                                <span class="code">System.Net.WebRequest</span> class.
+                                Logs events to a local syslog service. This appender uses the POSIX libc syslog
+                                library functions. If these functions are not available on the local system then
+                                this appender will not work!
                             </p>
-                            <h3>Support for No-Touch deployment</h3>
+                        </dd>
+                        <dt>
+                            <span class="code">RemoteSyslogAppender</span>
+                        </dt>
+                        <dd>
                             <p>
-                                Log4net supports configuring No-Touch deployment applications using the
-                                <span class="code">XmlConfiguratorAttribute</span>. If a relative config file
-                                or extension is specified then this is resolved relative to the deployment
-                                URI.
+                                The <span class="code">RemoteSyslogAppender</span> uses the BSD syslog protocol to
+                                log to a syslog daemon. The syslogd listens for for messages on UDP port 514.
                             </p>
-                            <h3>Config file parser enhancements</h3>
+                        </dd>
+                        <dt>
+                            <span class="code">TelnetAppender</span>
+                        </dt>
+                        <dd>
                             <p>
-                                The config file parser has been enhanced to support specifying the property subtype, or intermediate type, 
-                                directly on the property element, for example:
+                                The <span class="code">TelnetAppender</span> accepts socket connections and streams
+                                logging messages back to the client. The output is provided in a telnet-friendly way
+                                so that a log can be monitored over a TCP/IP socket.
+                                This allows simple remote monitoring of application logging.
                             </p>
-                            <div class="syntax"><pre class="code">
-&lt;layout type=&quot;log4net.Layout.PatternLayout&quot; value=&quot;%message%newline&quot; /&gt;</pre></div>
-                            <p>
-                                Implicit conversion will be attempted between the value string and the type specified, 
-                                and then again between the type and the target property type.
-                            </p>
-                            <h3>.NET string formatting syntax</h3>
-                            <p>
-                                Added .NET <span class="code">String.Format</span> style formatting syntax methods to 
-                                the <span class="code">ILog</span> interface. The new methods are: 
-                                <span class="code">DebugFormat</span>, <span class="code">InfoFormat</span>, 
-                                <span class="code">WarnFormat</span>, <span class="code">ErrorFormat</span> 
-                                and <span class="code">FatalFormat</span>.
-                            </p>
-                            <h3>Customizable levels</h3>
-                            <p>
-                                Levels are defined by the repository <span class="code">LevelMap</span>. The defined 
-                                levels, the relative ordering of levels and level display names can be configured on 
-                                a per-repository basis.
-                            </p>
-                            <h3>Per-appender security contexts</h3>
-                            <p>
-                                Appenders that interact with controlled platform resources, e.g. files, can be
-                                configured to use a separate security context when accessing these resources.
-                                The calling thread may not have appropriate privileges to access the resource a
-                                custom <span class="code">SecurityContext</span> can be used to elevate the
-                                privileges of the appender. The <span class="code">WindowsSecurityContext</span> 
-                                is used to specify alternative credentials on the Windows platform.
-                            </p>
-                            <h3>Added new appenders</h3>
-                            <dl>
-                                <dt><span class="code">AnsiColorTerminalAppender</span></dt>
-                                <dd>
-                                    <p>
-                                        The <span class="code">AnsiColorTerminalAppender</span> writes events to 
-                                        the application's ANSI terminal window. It can be configured to specify 
-                                        the text and background colors for different level events. Note that Console
-                                        applications running on Windows do not have an ANSI terminal window and
-                                        should use the <span class="code">ColoredConsoleAppender</span> instead.
-                                    </p>
-                                </dd>
-                                <dt><span class="code">LocalSyslogAppender</span></dt>
-                                <dd>
-                                    <p>
-                                        Logs events to a local syslog service. This appender uses the POSIX libc syslog 
-                                        library functions. If these functions are not available on the local system then 
-                                        this appender will not work!
-                                    </p>
-                                </dd>
-                                <dt><span class="code">RemoteSyslogAppender</span></dt>
-                                <dd>
-                                    <p>
-                                        The <span class="code">RemoteSyslogAppender</span> uses the BSD syslog protocol to 
-                                        log to a syslog daemon. The syslogd listens for for messages on UDP port 514.
-                                    </p>
-                                </dd>
-                                <dt><span class="code">TelnetAppender</span></dt>
-                                <dd>
-                                    <p>
-                                        The <span class="code">TelnetAppender</span> accepts socket connections and streams 
-                                        logging messages back to the client. The output is provided in a telnet-friendly way 
-                                        so that a log can be monitored over a TCP/IP socket. 
-                                        This allows simple remote monitoring of application logging.
-                                    </p>
-                                </dd>
-                            </dl>
-                            <h3>Added new <span class="code">LoggerMatchFilter</span> filter</h3>
-                            <p>
-                                Added <span class="code">LoggerMatchFilter</span> which matches a string against
-                                the event's logger name.
-                            </p>
-                            <h3>Pluggable file locking models for the <span class="code">FileAppender</span></h3>
-                            <p>
-                                The <span class="code">FileAppender</span> (and by extension the 
-                                <span class="code">RollingFileAppender</span>) now support pluggable file
-                                locking models. The default model, <span class="code">ExclusiveLock</span>, 
-                                maintains the current exclusive file locking behavior. An alternative
-                                model, <span class="code">MinimalLock</span>, can be used to support writing to
-                                a single output file from multiple processes. 
-                            </p>
-                            <p>
-                                For full details see the SDK Reference entry: <a href="sdk/html/T_log4net_Appender_FileAppender_LockingModel.htm">log4net.Appender.FileAppender.LockingModel</a>.
-                            </p>
-                            <h3><span class="code">RollingFileAppender</span> roll once</h3>
-                            <p>
-                                The <span class="code">RollingFileAppender</span> now supports a new
-                                rolling style, <span class="code">Once</span>. In this mode the appender
-                                will roll the file once per run.
-                            </p>
-                            <h3><span class="code">SmtpAppender</span> authentication</h3>
-                            <p>
-                                On the .NET 1.1 platform only, the <span class="code">SmtpAppender</span> supports authenticating
-                                against the mail server using either username and password or integrated NTLM authentication.
-                            </p>
-                            <h3><span class="code">AdoNetAppender</span> ReconnectOnError</h3>
-                            <p>
-                                Added new configuration property to <span class="code">AdoNetAppender</span>.
-                                Setting <span class="code">ReconnectOnError</span> to <span class="code">true</span>
-                                will force the appender to attempt to reconnect to the database if the connection
-                                is lost.
-                            </p>
-                            <h3><span class="code">UdpAppender</span> hostname support</h3>
-                            <p>
-                                The <span class="code">UdpAppender</span> config property <span class="code">RemoteAddress</span>
-                                can now be specified as a DNS hostname string. The hostname is resolved to an IP address.
-                            </p>
+                        </dd>
+                    </dl>
+                    <h3>Added new <span class="code">LoggerMatchFilter</span> filter
+                    </h3>
+                    <p>
+                        Added <span class="code">LoggerMatchFilter</span> which matches a string against
+                        the event's logger name.
+                    </p>
+                    <h3>Pluggable file locking models for the
+                        <span class="code">FileAppender</span>
+                    </h3>
+                    <p>
+                        The <span class="code">FileAppender</span> (and by extension the
+                        <span class="code">RollingFileAppender</span>) now support pluggable file
+                        locking models. The default model, <span class="code">ExclusiveLock</span>,
+                        maintains the current exclusive file locking behavior. An alternative
+                        model, <span class="code">MinimalLock</span>, can be used to support writing to
+                        a single output file from multiple processes.
+                    </p>
+                    <p>
+                        For full details see the SDK Reference entry: <a
+                            href="sdk/html/T_log4net_Appender_FileAppender_LockingModel.htm">
+                        log4net.Appender.FileAppender.LockingModel</a>.
+                    </p>
+                    <h3>
+                        <span class="code">RollingFileAppender</span>
+                        roll once
+                    </h3>
+                    <p>
+                        The <span class="code">RollingFileAppender</span> now supports a new
+                        rolling style, <span class="code">Once</span>. In this mode the appender
+                        will roll the file once per run.
+                    </p>
+                    <h3>
+                        <span class="code">SmtpAppender</span>
+                        authentication
+                    </h3>
+                    <p>
+                        On the .NET 1.1 platform only, the <span class="code">SmtpAppender</span> supports
+                        authenticating
+                        against the mail server using either username and password or integrated NTLM authentication.
+                    </p>
+                    <h3>
+                        <span class="code">AdoNetAppender</span>
+                        ReconnectOnError
+                    </h3>
+                    <p>
+                        Added new configuration property to <span class="code">AdoNetAppender</span>.
+                        Setting <span class="code">ReconnectOnError</span> to
+                        <span class="code">true</span>
+                        will force the appender to attempt to reconnect to the database if the connection
+                        is lost.
+                    </p>
+                    <h3>
+                        <span class="code">UdpAppender</span>
+                        hostname support
+                    </h3>
+                    <p>
+                        The <span class="code">UdpAppender</span> config property
+                        <span class="code">RemoteAddress</span>
+                        can now be specified as a DNS hostname string. The hostname is resolved to an IP address.
+                    </p>
                 </section>
-                
+
                 <section id="1.2.9-other" name="Other Changes">
-                            <h3>FxCop compliance</h3>
+                    <h3>FxCop compliance</h3>
+                    <p>
+                        Updates to bring the internal code in line with the current FxCop rules.
+                    </p>
+                    <h3>Separate NUnit tests</h3>
+                    <p>
+                        Moved the NUnit tests into a separate project, <span class="code">log4net.Tests</span>.
+                    </p>
+                    <h3>Bug Fixes</h3>
+                    <dl>
+                        <dt>
+                            <span class="code">RemotingAppender</span>
+                        </dt>
+                        <dd>
                             <p>
-                                Updates to bring the internal code in line with the current FxCop rules.
+                                Sends events from a <span class="code">ThreadPool</span> thread
+                                rather than the calling thread to prevent transfer,
+                                and potential loss, of the <span class="code">CallContext</span>.
                             </p>
-                            <h3>Separate NUnit tests</h3>
+                        </dd>
+                        <dt>
+                            <span class="code">RollingFileAppender</span>
+                        </dt>
+                        <dd>
                             <p>
-                                Moved the NUnit tests into a separate project, <span class="code">log4net.Tests</span>.
+                                Fixed date rolling period detection for non UTC timezones.
                             </p>
-                            <h3>Bug Fixes</h3>
-                            <dl>
-                                <dt><span class="code">RemotingAppender</span></dt>
-                                <dd>
-                                    <p>
-                                        Sends events from a <span class="code">ThreadPool</span> thread 
-                                        rather than the calling thread to prevent transfer, 
-                                        and potential loss, of the <span class="code">CallContext</span>.
-                                    </p>
-                                </dd>
-                                <dt><span class="code">RollingFileAppender</span></dt>
-                                <dd>
-                                    <p>
-                                        Fixed date rolling period detection for non UTC timezones.
-                                    </p>
-                                </dd>
-                                <dt><span class="code">ColoredConsoleAppender</span></dt>
-                                <dd>
-                                    <p>
-                                        Updated to support writing more than 30,000 chars in a single message.
-                                        Fixed background color overspill if the console window needs to
-                                        scroll the contents.
-                                    </p>
-                                </dd>
-                            </dl>
+                        </dd>
+                        <dt>
+                            <span class="code">ColoredConsoleAppender</span>
+                        </dt>
+                        <dd>
+                            <p>
+                                Updated to support writing more than 30,000 chars in a single message.
+                                Fixed background color overspill if the console window needs to
+                                scroll the contents.
+                            </p>
+                        </dd>
+                    </dl>
                 </section>
-                
+
             </section>
-            
+
             <section id="1.2.0b8" name="1.2.0 Beta 8">
-                        <h3>Changed assembly name to <span class="code">log4net</span></h3>
-                        <p>
-                            The build output is now <span class="code">log4net.dll</span>
-                            for all frameworks. This is a breaking change.
-                        </p>
-                        <p>
-                            To resolve cross platform and cross version issues we have
-                            changed the log4net assembly to use a common name for all 
-                            frameworks. The assembly friendly name is now <span class="code">log4net</span>.
-                            The builds for each framework can now be differentiated
-                            by the assembly title. This includes the name of the framework
-                            that the assembly was built on. 
-                        </p>
-                        <h3>Combined Release and ReleaseStrong builds</h3>
-                        <p>
-                            The Release and ReleaseStrong builds have been consolidated into
-                            a single build called Release. This Release build is strongly named.
-                        </p>
-                        <h3>New Appender: ColoredConsoleAppender</h3>
-                        <p>
-                            The <span class="code">ColoredConsoleAppender</span> writes events to the
-                            application's console. It can be configured to specify the text and background
-                            colors for different level events.
-                        </p>
-                        <h3>New Appender: SmtpPickupDirAppender</h3>
-                        <p>
-                            The <span class="code">SmtpPickupDirAppender</span> generates SMTP compliant
-                            messages and writes them to a local directory. These files can then be read
-                            by an SMTP agent (e.g. the IIS SMTP Agent) and delivered.
-                        </p>
-                        <h3>New Layout: XmlLayoutSchemaLog4j</h3>
-                        <p>
-                            This new layout formats the logging events as XML which complies with
-                            the Apache log4j&#x2122; event dtd. This can be used to transfer log event from log4net
-                            to log4j. Currently the only appender that can communicate directly with
-                            log4j is the <span class="code">UdpAppender</span>.
-                        </p>
-                        <h3>New PatternLayout conversion characters</h3>
-                        <p>
-                            Added support for capturing the current thread principal name and the
-                            app domain friendly name for each logging event.
-                        </p>
-                        <dl>
-                            <dt>%a</dt>
-                            <dd>
-                                Used to output the friendly name of the AppDomain where the
-                                logging event was generated. 
-                            </dd>
-                            <dt>%u</dt>
-                            <dd>
-                                Used to output the user name for the currently active user
-                                (<span class="code">Principal.Identity.Name</span>).
-                            </dd>
-                        </dl>
-                        <h3>Types specified in the config file are now loaded ignoring case</h3>
-                        <p>
-                            All types specified in the configuration files are now loaded
-                            using a case insensitive method.
-                        </p>
-                        <h3>Fine grained fixing for buffered events</h3>
-                        <p>
-                            The <span class="code">LoggingEvent</span> now supports fine grained
-                            fixing of data that needs to be accessed outside the append context,
-                            e.g. when an event is buffered. The new <span class="code">Fix</span>
-                            property takes a combination of the <span class="code">FixFlags</span> 
-                            enumeration values.
-                        </p>
-                        <h3>Code updated inline with FxCop 1.21</h3>
-                        <p>
-                            In line with the FxCop 1.21 guidelines:
-                            Sealed utility classes. Added serialization security demand to GetObjectData.
-                            Renamed parameters.
-                        </p>
-                        <h3>EventLogAppender 32K Limit</h3>
-                        <p>
-                            There is a limit of 32K characters in an EventLog message. Added a 
-                            check that only logs the first 32000 characters from the rendered 
-                            message.
-                        </p>
+                <h3>Changed assembly name to
+                    <span class="code">log4net</span>
+                </h3>
+                <p>
+                    The build output is now
+                    <span class="code">log4net.dll</span>
+                    for all frameworks. This is a breaking change.
+                </p>
+                <p>
+                    To resolve cross platform and cross version issues we have
+                    changed the log4net assembly to use a common name for all
+                    frameworks. The assembly friendly name is now <span class="code">log4net</span>.
+                    The builds for each framework can now be differentiated
+                    by the assembly title. This includes the name of the framework
+                    that the assembly was built on.
+                </p>
+                <h3>Combined Release and ReleaseStrong builds</h3>
+                <p>
+                    The Release and ReleaseStrong builds have been consolidated into
+                    a single build called Release. This Release build is strongly named.
+                </p>
+                <h3>New Appender: ColoredConsoleAppender</h3>
+                <p>
+                    The <span class="code">ColoredConsoleAppender</span> writes events to the
+                    application's console. It can be configured to specify the text and background
+                    colors for different level events.
+                </p>
+                <h3>New Appender: SmtpPickupDirAppender</h3>
+                <p>
+                    The <span class="code">SmtpPickupDirAppender</span> generates SMTP compliant
+                    messages and writes them to a local directory. These files can then be read
+                    by an SMTP agent (e.g. the IIS SMTP Agent) and delivered.
+                </p>
+                <h3>New Layout: XmlLayoutSchemaLog4j</h3>
+                <p>
+                    This new layout formats the logging events as XML which complies with
+                    the Apache log4j&#x2122; event dtd. This can be used to transfer log event from log4net
+                    to log4j. Currently the only appender that can communicate directly with
+                    log4j is the <span class="code">UdpAppender</span>.
+                </p>
+                <h3>New PatternLayout conversion characters</h3>
+                <p>
+                    Added support for capturing the current thread principal name and the
+                    app domain friendly name for each logging event.
+                </p>
+                <dl>
+                    <dt>%a</dt>
+                    <dd>
+                        Used to output the friendly name of the AppDomain where the
+                        logging event was generated.
+                    </dd>
+                    <dt>%u</dt>
+                    <dd>
+                        Used to output the user name for the currently active user
+                        (<span class="code">Principal.Identity.Name</span>).
+                    </dd>
+                </dl>
+                <h3>Types specified in the config file are now loaded ignoring case</h3>
+                <p>
+                    All types specified in the configuration files are now loaded
+                    using a case insensitive method.
+                </p>
+                <h3>Fine grained fixing for buffered events</h3>
+                <p>
+                    The <span class="code">LoggingEvent</span> now supports fine grained
+                    fixing of data that needs to be accessed outside the append context,
+                    e.g. when an event is buffered. The new
+                    <span class="code">Fix</span>
+                    property takes a combination of the
+                    <span class="code">FixFlags</span>
+                    enumeration values.
+                </p>
+                <h3>Code updated inline with FxCop 1.21</h3>
+                <p>
+                    In line with the FxCop 1.21 guidelines:
+                    Sealed utility classes. Added serialization security demand to GetObjectData.
+                    Renamed parameters.
+                </p>
+                <h3>EventLogAppender 32K Limit</h3>
+                <p>
+                    There is a limit of 32K characters in an EventLog message. Added a
+                    check that only logs the first 32000 characters from the rendered
+                    message.
+                </p>
             </section>
-            
+
             <section id="1.2.0b7" name="1.2.0 Beta 7">
-                        <h3>Updated to support the Microsoft .NET Framework 1.1 Final</h3>
-                        <p>
-                            Updated to support the Microsoft .NET Framework 1.1 Final Beta (1.1.4322).
-                        </p>
-                        <h3>Features document</h3>
-                        <p>
-                            Added a new document that covers the main features of log4net.
-                            See the <a href="features.html">features</a>
-                            document for more information.
-                        </p>
-                        <h3>Hierarchy disabled until it is configured</h3>
-                        <p>
-                            The Hierarchy is now disabled until it has been configured.
-                            All messages logged to the Hierarchy before it has been
-                            configured will be ignored without an error message being
-                            written to the console.
-                        </p>
-                        <p>
-                            If you are configuring log4net programmatically (i.e. not using
-                            one of the built-in configurators) you must set the 
-                            <span class="code">ILoggerRepository.Configured</span> property
-                            to <span class="code">true</span> once you have configured
-                            the repository.
-                        </p>
-                        <p>
-                            The no appenders defined for a logger message will no longer be 
-                            displayed on the console by default. This message will only be 
-                            displayed if internal debugging is enabled.
-                        </p>
-                        <h3>New examples in VisualBasic.NET, JScript and Managed C++</h3>
-                        <p>
-                            New examples in VisualBasic.NET, JScript and Managed C++.
-                            TODO Link to document about examples.
-                        </p>
-                        <h3>Code and Documentation Updates</h3>
-                        <p>
-                            Code fixes. Documentation and manual updates. 
-                            See the ChangeLog for more information.
-                        </p>
-                        <h3>Added document with example appender configurations</h3>
-                        <p>
-                            See the <a href="config-examples.html">Example Appender Configuration</a> 
-                            document for more information.
-                        </p>
+                <h3>Updated to support the Microsoft .NET Framework 1.1 Final</h3>
+                <p>
+                    Updated to support the Microsoft .NET Framework 1.1 Final Beta (1.1.4322).
+                </p>
+                <h3>Features document</h3>
+                <p>
+                    Added a new document that covers the main features of log4net.
+                    See the
+                    <a href="features.html">features</a>
+                    document for more information.
+                </p>
+                <h3>Hierarchy disabled until it is configured</h3>
+                <p>
+                    The Hierarchy is now disabled until it has been configured.
+                    All messages logged to the Hierarchy before it has been
+                    configured will be ignored without an error message being
+                    written to the console.
+                </p>
+                <p>
+                    If you are configuring log4net programmatically (i.e. not using
+                    one of the built-in configurators) you must set the
+                    <span class="code">ILoggerRepository.Configured</span>
+                    property
+                    to <span class="code">true</span> once you have configured
+                    the repository.
+                </p>
+                <p>
+                    The no appenders defined for a logger message will no longer be
+                    displayed on the console by default. This message will only be
+                    displayed if internal debugging is enabled.
+                </p>
+                <h3>New examples in VisualBasic.NET, JScript and Managed C++</h3>
+                <p>
+                    New examples in VisualBasic.NET, JScript and Managed C++.
+                    TODO Link to document about examples.
+                </p>
+                <h3>Code and Documentation Updates</h3>
+                <p>
+                    Code fixes. Documentation and manual updates.
+                    See the ChangeLog for more information.
+                </p>
+                <h3>Added document with example appender configurations</h3>
+                <p>
+                    See the
+                    <a href="config-examples.html">Example Appender Configuration</a>
+                    document for more information.
+                </p>
             </section>
 
             <section id="1.2.0b6" name="1.2.0 Beta 6">
-                        <h3>Added support for multiple frameworks</h3>
-                        <p>
-                            log4net 1.2.0 beta 6 adds support for the the following frameworks:
-                        </p>
-                        <div class="table">
-                            <table cellspacing="0">
-                                <colgroup>
-                                    <col style="text-align: left;" />
-                                </colgroup>
-                                <tr>
-                                    <th>
-                                        Framework</th>
-                                    <th>
-                                        Website</th>
-                                </tr>
-                                <tr style="vertical-align: top;">
-                                    <td>Microsoft .NET Framework 1.1 Final Beta (1.1.4322)</td>
-                                    <td><a href="http://msdn.microsoft.com/net">http://msdn.microsoft.com/net</a></td>
-                                </tr>
-                                <tr style="vertical-align: top;">
-                                    <td>Microsoft .NET Compact Framework 1.0 (1.0.5000)</td>
-                                    <td><a href="http://msdn.microsoft.com/vstudio/device/compactfx.asp">http://msdn.microsoft.com/vstudio/device/compactfx.asp</a></td>
-                                </tr>
-                                <tr style="vertical-align: top;">
-                                    <td>Mono 0.23</td>
-                                    <td><a href="http://www.go-mono.org">http://www.go-mono.org</a></td>
-                                </tr>
-                                <tr style="vertical-align: top;">
-                                    <td>Microsoft Shared Source CLI 1.0</td>
-                                    <td><a href="http://msdn.microsoft.com/library/en-us/dndotnet/html/mssharsourcecli.asp">http://msdn.microsoft.com/library/en-us/dndotnet/html/mssharsourcecli.asp</a></td>
-                                </tr>
-                            </table>
-                        </div>
-                        <br />
-                        <p>
-                            Not all frameworks are created equal and some features have been excluded from 
-                            some of the builds. See the <a href="framework-support.html">Framework Support</a> document for more information.
-                        </p>
-                        <h3>New build system using NAnt</h3>
-                        <p>
-                            The new build system allows log4net to be built for all supported frameworks and 
-                            in all build configurations in one go.
-                        </p>
-                        <h3>New source code &amp; distribution layout</h3>
-                        <p>
-                            The source code &amp; distribution layout has been updated to support the new 
-                            build environment and multiple target frameworks.
-                        </p>
-                        <h3>Removed DomainAttribute.UseDefaultDomain property</h3>
-                        <p>
-                            Updated default behavior of <span class="code">DefaultRepositorySelector</span>. Assemblies 
-                            are now by default placed into the default domain. To specify another domain, 
-                            the <span class="code">DomainAttribute</span> must be used. This is the opposite behavior 
-                            to what was previously available. If you were previously specifying the <span class="code">DomainAttribute.UseDefaultDomain</span>
-                            property then you should remove it, and if the default behavior is now 
-                            sufficient, you do not need to specify the <span class="code">DomainAttribute</span> at all.
-                        </p>
-                        <h3>Updated configuration file parser</h3>
-                        <p>
-                            Updated config file parser to use the element name as the property to set. Also 
-                            removed <span class="code">&lt;object&gt;</span> tag, the type attribute can now be 
-                            specified on the property element directly.
-                        </p>
-                        <p>
-                            For example:
-                        </p>
-                        <div class="syntax"><pre class="code">
-&lt;appender&gt;
-  &lt;param name=&quot;Evaluator&quot;&gt;
-    &lt;object type=&quot;log4net.spi.LevelEvaluator&quot;&gt;
-      &lt;constructor&gt;
-        &lt;param type=&quot;log4net.spi.Level&quot; value=&quot;DEBUG&quot;/&gt;
-      &lt;/constructor&gt;
-    &lt;/object&gt;
-  &lt;/param&gt;
-&lt;/appender&gt;</pre></div>
-                        <p>
-                            becomes:
-                        </p>
-                        <div class="syntax"><pre class="code">
-&lt;appender&gt;
-  &lt;evaluator type=&quot;log4net.spi.LevelEvaluator&quot;&gt;
-    &lt;threshold value=&quot;DEBUG&quot;/&gt;
-  &lt;/evaluator&gt;
-&lt;/appender&gt;</pre></div>
-                        <h3>Support for event ID</h3>
-                        <p>
-                            The <span class="code">EventLogAppender</span> now supports setting the event ID in the 
-                            event log, this is taken from the <span class="code">EventID</span> property from the per 
-                            event <span class="code">Properties</span> map on the <span class="code">LoggingEvent</span>.
-                        </p>
-                        <h3>Updated ADONetAppender</h3>
-                        <p />
-                        <ul>
-                            <li>
-                                Added support for prepared statements and stored procedures</li>
-                            <li>
-                                Added <span class="code">RawTimeStampLayout</span>to correctly convert the timestamps into 
-                                database date time format</li>
-                            <li>
-                                Added <span class="code">ExceptionLayout</span> to render the exception data</li>
-                        </ul>
-                        <p />
-                        <h3>Support for front-end extension</h3>
-                        <p>
-                            This allows the logging API to be wrapped or adapted for specific purposes. Two 
-                            extension samples are included in the distribution:
-                        </p>
-                        <div class="table">
-                            <table cellspacing="0">
-                                <colgroup>
-                                    <col style="width: 50%; text-align: left;" />
-                                    <col style="width: 50%; text-align: left;" />
-                                </colgroup>
-                                <tr>
-                                    <th>
-                                        Extension</th>
-                                    <th>
-                                        Description</th>
-                                </tr>
-                                <tr style="vertical-align: top;">
-                                    <td>log4net.Ext.Trace</td>
-                                    <td>Adds trace logging methods</td>
-                                </tr>
-                                <tr style="vertical-align: top;">
-                                    <td>log4net.Ext.EventID</td>
-                                    <td>Adds additional eventId parameter to all methods</td>
-                                </tr>
-                            </table>
-                        </div>
-                        <p />
-                        <h3>Added ForwardingAppender</h3>
-                        <p>Forwards events to multiple sub appenders after applying filter rules.</p>
-                        <h3>Added BufferingForwardingAppender</h3>
-                        <p>Forward events to sub appenders after buffering them.</p>
-                        <h3>Added ASPNetTraceAppender</h3>
-                        <p>Logs events to the ASP.NET trace system.</p>
-                        <h3>Added NetSendAppender</h3>
-                        <p>Delivers logging events using the Windows Messenger service.</p>
-                        <h3>Added UdpAppender</h3>
-                        <p>Sends logging events as connectionless UDP datagrams to a remote host or a 
-                            multicast group.</p>
-                        <h3>Removed obsolete methods</h3>
-                        <h3>Lots of updates to improve our compliance with FxCop</h3>
-                        <h3>Improved SDK documentation</h3>
+                <h3>Added support for multiple frameworks</h3>
+                <p>
+                    log4net 1.2.0 beta 6 adds support for the the following frameworks:
+                </p>
+                <div class="table">
+                    <table cellspacing="0">
+                        <colgroup>
+                            <col style="text-align: left;"/>
+                        </colgroup>
+                        <tr>
+                            <th>
+                                Framework
+                            </th>
+                            <th>
+                                Website
+                            </th>
+                        </tr>
+                        <tr style="vertical-align: top;">
+                            <td>Microsoft .NET Framework 1.1 Final Beta (1.1.4322)</td>
+                            <td>
+                                <a href="http://msdn.microsoft.com/net">http://msdn.microsoft.com/net</a>
+                            </td>
+                        </tr>
+                        <tr style="vertical-align: top;">
+                            <td>Microsoft .NET Compact Framework 1.0 (1.0.5000)</td>
+                            <td>
+                                <a href="http://msdn.microsoft.com/vstudio/device/compactfx.asp">
+                                    http://msdn.microsoft.com/vstudio/device/compactfx.asp
+                                </a>
+                            </td>
+                        </tr>
+                        <tr style="vertical-align: top;">
+                            <td>Mono 0.23</td>
+                            <td>
+                                <a href="http://www.go-mono.org">http://www.go-mono.org</a>
+                            </td>
+                        </tr>
+                        <tr style="vertical-align: top;">
+                            <td>Microsoft Shared Source CLI 1.0</td>
+                            <td>
+                                <a href="http://msdn.microsoft.com/library/en-us/dndotnet/html/mssharsourcecli.asp">
+                                    http://msdn.microsoft.com/library/en-us/dndotnet/html/mssharsourcecli.asp
+                                </a>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+                <br/>
+                <p>
+                    Not all frameworks are created equal and some features have been excluded from
+                    some of the builds. See the <a href="framework-support.html">Framework Support</a> document for more
+                    information.
+                </p>
+                <h3>New build system using NAnt</h3>
+                <p>
+                    The new build system allows log4net to be built for all supported frameworks and
+                    in all build configurations in one go.
+                </p>
+                <h3>New source code &amp; distribution layout</h3>
+                <p>
+                    The source code &amp; distribution layout has been updated to support the new
+                    build environment and multiple target frameworks.
+                </p>
+                <h3>Removed DomainAttribute.UseDefaultDomain property</h3>
+                <p>
+                    Updated default behavior of <span class="code">DefaultRepositorySelector</span>. Assemblies
+                    are now by default placed into the default domain. To specify another domain,
+                    the <span class="code">DomainAttribute</span> must be used. This is the opposite behavior
+                    to what was previously available. If you were previously specifying the
+                    <span class="code">DomainAttribute.UseDefaultDomain</span>
+                    property then you should remove it, and if the default behavior is now
+                    sufficient, you do not need to specify the <span class="code">DomainAttribute</span> at all.
+                </p>
+                <h3>Updated configuration file parser</h3>
+                <p>
+                    Updated config file parser to use the element name as the property to set. Also
+                    removed <span class="code">&lt;object&gt;</span> tag, the type attribute can now be
+                    specified on the property element directly.
+                </p>
+                <p>
+                    For example:
+                </p>
+                <div class="syntax">
+                    <pre class="code">
+                        &lt;appender&gt;
+                        &lt;param name=&quot;Evaluator&quot;&gt;
+                        &lt;object type=&quot;log4net.spi.LevelEvaluator&quot;&gt;
+                        &lt;constructor&gt;
+                        &lt;param type=&quot;log4net.spi.Level&quot; value=&quot;DEBUG&quot;/&gt;
+                        &lt;/constructor&gt;
+                        &lt;/object&gt;
+                        &lt;/param&gt;
+                        &lt;/appender&gt;
+                    </pre>
+                </div>
+                <p>
+                    becomes:
+                </p>
+                <div class="syntax">
+                    <pre class="code">
+                        &lt;appender&gt;
+                        &lt;evaluator type=&quot;log4net.spi.LevelEvaluator&quot;&gt;
+                        &lt;threshold value=&quot;DEBUG&quot;/&gt;
+                        &lt;/evaluator&gt;
+                        &lt;/appender&gt;
+                    </pre>
+                </div>
+                <h3>Support for event ID</h3>
+                <p>
+                    The <span class="code">EventLogAppender</span> now supports setting the event ID in the
+                    event log, this is taken from the <span class="code">EventID</span> property from the per
+                    event <span class="code">Properties</span> map on the <span class="code">LoggingEvent</span>.
+                </p>
+                <h3>Updated ADONetAppender</h3>
+                <p/>
+                <ul>
+                    <li>
+                        Added support for prepared statements and stored procedures
+                    </li>
+                    <li>
+                        Added <span class="code">RawTimeStampLayout</span>to correctly convert the timestamps into
+                        database date time format
+                    </li>
+                    <li>
+                        Added <span class="code">ExceptionLayout</span> to render the exception data
+                    </li>
+                </ul>
+                <p/>
+                <h3>Support for front-end extension</h3>
+                <p>
+                    This allows the logging API to be wrapped or adapted for specific purposes. Two
+                    extension samples are included in the distribution:
+                </p>
+                <div class="table">
+                    <table cellspacing="0">
+                        <colgroup>
+                            <col style="width: 50%; text-align: left;"/>
+                            <col style="width: 50%; text-align: left;"/>
+                        </colgroup>
+                        <tr>
+                            <th>
+                                Extension
+                            </th>
+                            <th>
+                                Description
+                            </th>
+                        </tr>
+                        <tr style="vertical-align: top;">
+                            <td>log4net.Ext.Trace</td>
+                            <td>Adds trace logging methods</td>
+                        </tr>
+                        <tr style="vertical-align: top;">
+                            <td>log4net.Ext.EventID</td>
+                            <td>Adds additional eventId parameter to all methods</td>
+                        </tr>
+                    </table>
+                </div>
+                <p/>
+                <h3>Added ForwardingAppender</h3>
+                <p>Forwards events to multiple sub appenders after applying filter rules.</p>
+                <h3>Added BufferingForwardingAppender</h3>
+                <p>Forward events to sub appenders after buffering them.</p>
+                <h3>Added ASPNetTraceAppender</h3>
+                <p>Logs events to the ASP.NET trace system.</p>
+                <h3>Added NetSendAppender</h3>
+                <p>Delivers logging events using the Windows Messenger service.</p>
+                <h3>Added UdpAppender</h3>
+                <p>Sends logging events as connectionless UDP datagrams to a remote host or a
+                    multicast group.
+                </p>
+                <h3>Removed obsolete methods</h3>
+                <h3>Lots of updates to improve our compliance with FxCop</h3>
+                <h3>Improved SDK documentation</h3>
             </section>
 
             <section id="1.2.0b5" name="1.2.0 Beta 5">
-                        <h3>Fixed Exception thrown when DOM Configurator called with a null XML 
-                            Element.</h3>
-                        <p>This occurred if the configuration file did not have a log4net section defined.</p>
-                        <h3>Made level lookup case insensitive</h3>
-                        <h3>Prevented the Hierarchy's Threshold level from being set to a null reference</h3>
+                <h3>Fixed Exception thrown when DOM Configurator called with a null XML
+                    Element.
+                </h3>
+                <p>This occurred if the configuration file did not have a log4net section defined.</p>
+                <h3>Made level lookup case insensitive</h3>
+                <h3>Prevented the Hierarchy's Threshold level from being set to a null reference</h3>
             </section>
 
             <section id="1.2.0b4" name="1.2.0 Beta 4">
-                        <h3>Added event specific properties to the logging event object</h3>
-                        <p>
-                            Appenders can add additional information to the events they are logging. The <span class="code">RemotingAppender</span>
-                            and the <span class="code">SMTPAppender</span> both add a 'hostname' property to the events. 
-                            These properties can be accessed using the <span class="code">PatternLayout</span> with the 
-                            %P{name} syntax.
-                        </p>
-                        <h3>Added a plugin framework</h3>
-                        <p>An <span class="code">IPlugin</span> interface can be attached to any repository.</p>
-                        <h3>A new RemoteLoggingServerPlugin plugin acts as the server for the 
-                            RemotingAppender</h3>
-                        <h3>Updated the core log4net framework to work in an environment with no 
-                            permissions</h3>
-                        <p>Specific appenders still require additional permissions to log correctly</p>
-                        <h3>Added support for domain aliasing using the AliasDomainAttribute</h3>
-                        <p>This allows a parent assembly to take control of the logging domain for child 
-                            assemblies.</p>
-                        <h3>Added events for repository creation, configuration change, configuration reset 
-                            and repository shutdown</h3>
-                        <h3>Added LevelMap to the ILoggerRepository interface</h3>
-                        <p>The mapping from level name to level object is now repository specific, 
-                            therefore each repository can have independent mappings.</p>
-                        <h3>Moved hierarchy specific config file parser to new DOMHierarchyConfigurator class</h3>
-                        <p>This is controlled by the <span class="code">Hierarchy</span> object and allows for better 
-                            encapsulation.</p>
-                        <h3>Added OnlyFixPartialEventData property to the buffered appenders</h3>
-                        <p>This setting causes slow settings to be ignored. This significantly improves the 
-                            performance of the buffered appenders.</p>
-                        <h3>XML entity references are supported in the XML config file.</h3>
-                        <h3>Added support for expanding environment variables in &lt;param&gt; values</h3>
-                        <p>
-                            The environment variables must be specified as <span class="code">${FOO}</span> where <span class="code">FOO</span>
-                            is the name of the variable to expand.
-                        </p>
-                        <h3>Upgraded to use NUnit 2.0</h3>
-                        <h3>File appenders can specify the encoding to use for the file</h3>
-                        <h3>Added strong named configuration</h3>
+                <h3>Added event specific properties to the logging event object</h3>
+                <p>
+                    Appenders can add additional information to the events they are logging. The
+                    <span class="code">RemotingAppender</span>
+                    and the <span class="code">SMTPAppender</span> both add a 'hostname' property to the events.
+                    These properties can be accessed using the <span class="code">PatternLayout</span> with the
+                    %P{name} syntax.
+                </p>
+                <h3>Added a plugin framework</h3>
+                <p>An <span class="code">IPlugin</span> interface can be attached to any repository.
+                </p>
+                <h3>A new RemoteLoggingServerPlugin plugin acts as the server for the
+                    RemotingAppender
+                </h3>
+                <h3>Updated the core log4net framework to work in an environment with no
+                    permissions
+                </h3>
+                <p>Specific appenders still require additional permissions to log correctly</p>
+                <h3>Added support for domain aliasing using the AliasDomainAttribute</h3>
+                <p>This allows a parent assembly to take control of the logging domain for child
+                    assemblies.
+                </p>
+                <h3>Added events for repository creation, configuration change, configuration reset
+                    and repository shutdown
+                </h3>
+                <h3>Added LevelMap to the ILoggerRepository interface</h3>
+                <p>The mapping from level name to level object is now repository specific,
+                    therefore each repository can have independent mappings.
+                </p>
+                <h3>Moved hierarchy specific config file parser to new DOMHierarchyConfigurator class</h3>
+                <p>This is controlled by the <span class="code">Hierarchy</span> object and allows for better
+                    encapsulation.
+                </p>
+                <h3>Added OnlyFixPartialEventData property to the buffered appenders</h3>
+                <p>This setting causes slow settings to be ignored. This significantly improves the
+                    performance of the buffered appenders.
+                </p>
+                <h3>XML entity references are supported in the XML config file.</h3>
+                <h3>Added support for expanding environment variables in &lt;param&gt; values</h3>
+                <p>
+                    The environment variables must be specified as <span class="code">${FOO}</span> where
+                    <span class="code">FOO</span>
+                    is the name of the variable to expand.
+                </p>
+                <h3>Upgraded to use NUnit 2.0</h3>
+                <h3>File appenders can specify the encoding to use for the file</h3>
+                <h3>Added strong named configuration</h3>
             </section>
 
             <section id="1.2.0b3" name="1.2.0 Beta 3">
-                        <h3>Added log4net.Ext.Trace extension</h3>
-                        <p>This is a separate assembly that adds a trace level to log4net.</p>
-                        <h3>The default log file output directory is now the application base directory not 
-                            the current directory</h3>
-                        <h3>Added MemoryAppender</h3>
-                        <p>Stores all the logging events in an in-memory buffer.</p>
-                        <h3>Moved the Hierarchy implementation into a separate namespace</h3>
-                        <p>
-                            The <span class="code">log4net.Repository.Hierarchy</span> namespace now contains all the 
-                            code that is specific to the <span class="code">Hierarchy</span> implementation.
-                        </p>
-                        <h3>Refactored the DOMConfigurator and BasicConfigurator</h3>
-                        <p>
-                            The <span class="code">Hierarchy</span> specific data schema and implementation could be has 
-                            now been moved to the <span class="code">log4net.Repository.Hierarchy</span> namespace. The 
-                            bootstrap code for these configurators remains in the <span class="code">log4net.Config</span>
-                            namespace.
-                        </p>
-                        <h3>Replaced the DOMConfiguratorAttribute UseExecutableDomain
-                            property with UseDefaultDomain</h3>
-                        <p>
-                            This change to the implementation of the <span class="code">DOMConfiguratorAttribute</span> should 
-                            allow the configuration of multiple assemblies to be accomplished more easily, 
-                            especially when developing web applications (ASP.NET).
-                        </p>
-                        <h3>A few good bug fixes!</h3>
+                <h3>Added log4net.Ext.Trace extension</h3>
+                <p>This is a separate assembly that adds a trace level to log4net.</p>
+                <h3>The default log file output directory is now the application base directory not
+                    the current directory
+                </h3>
+                <h3>Added MemoryAppender</h3>
+                <p>Stores all the logging events in an in-memory buffer.</p>
+                <h3>Moved the Hierarchy implementation into a separate namespace</h3>
+                <p>
+                    The <span class="code">log4net.Repository.Hierarchy</span> namespace now contains all the
+                    code that is specific to the <span class="code">Hierarchy</span> implementation.
+                </p>
+                <h3>Refactored the DOMConfigurator and BasicConfigurator</h3>
+                <p>
+                    The <span class="code">Hierarchy</span> specific data schema and implementation could be has
+                    now been moved to the <span class="code">log4net.Repository.Hierarchy</span> namespace. The
+                    bootstrap code for these configurators remains in the
+                    <span class="code">log4net.Config</span>
+                    namespace.
+                </p>
+                <h3>Replaced the DOMConfiguratorAttribute UseExecutableDomain
+                    property with UseDefaultDomain
+                </h3>
+                <p>
+                    This change to the implementation of the <span class="code">DOMConfiguratorAttribute</span> should
+                    allow the configuration of multiple assemblies to be accomplished more easily,
+                    especially when developing web applications (ASP.NET).
+                </p>
+                <h3>A few good bug fixes!</h3>
             </section>
 
             <section id="1.2.0b2" name="1.2.0 Beta 2">
-                        <h3>Added ADONetAppender</h3>
-                        <p>Thanks to TechnologyOneCorp.com.</p>
-                        <h3>Added TraceLogAssembly extensibility example</h3>
-                        <h3>Lots of bug fixes</h3>
+                <h3>Added ADONetAppender</h3>
+                <p>Thanks to TechnologyOneCorp.com.</p>
+                <h3>Added TraceLogAssembly extensibility example</h3>
+                <h3>Lots of bug fixes</h3>
             </section>
 
             <section id="1.2.0b1" name="1.2.0 Beta 1">
-                        <h3>Added 6 new examples</h3>
-                        <h3>Split Category class into Logger and LogManager classes</h3>
-                        <p>
-                            The instance methods from <span class="code">Category</span> have moved to the <span class="code">Logger</span>
-                            class. The static methods from <span class="code">Category</span> have moved to the <span class="code">LogManager</span>
-                            class. The <span class="code">Category</span> class still exists but for backward 
-                            compatibility only. Changed interface <span class="code">ICategoryFactory</span> to <span class="code">ILoggerFactory</span>
-                            and the implementation class <span class="code">DefaultCategoryFactory</span> to <span class="code">DefaultLoggerFactory</span>.
-                        </p>
-                        <h3>Replaced Priority class with Level class</h3>
-                        <p>
-                            The <span class="code">Priority</span> class has been replaced by the <span class="code">Level</span> class. 
-                            The <span class="code">Priority</span> class still exists for backward compatibility only. 
-                            The <span class="code">Level</span> class implements a static pool of <span class="code">Level</span> objects. 
-                            The <span class="code">Level</span> class is sealed and serializable.
-                        </p>
-                        <h3>Added ILoggerRepository interface implemented by Hierarchy</h3>
-                        <p>
-                            The <span class="code">Hierarchy</span> class implements the <span class="code">ILoggerRepository</span> interface. 
-                            This interface is used by the <span class="code">LogManager</span> class and therefore 
-                            allows different implementations of <span class="code">ILoggerRepository</span> to be used.
-                        </p>
-                        <h3>Enhanced NUnit tests</h3>
-                        <p>
-                            All the NUnit tests can be run using a single TestSuite: NUnitGUI 
-                            log4net.LogManager+AllTests,log4net.dll.
-                        </p>
-                        <h3>Added support for serializing LoggingEvents</h3>
-                        <p>
-                            The <span class="code">LoggingEvent</span> class is serializable. All local state is 
-                            captured before serialization occurs. This now allows <span class="code">LoggingEvent</span> 
-                            objects to be serialized between applications or machines.
-                        </p>
-                        <h3>Added RemotingAppender</h3>
-                        <p>
-                            Delivers <span class="code">LoggingEvents</span> to a remote interface. This can be used to 
-                            collect distributed logging into a single log file. There is an example 
-                            remoting sink that receives the logging events, see <span class="code">examples\net\remoting\RemotingServer</span>
-                            for details.
-                        </p>
-                        <h3>Added support for rendering composite objects</h3>
-                        <p>
-                            The <span class="code">IObjectRenderer</span> interface method <span class="code">DoRender</span> now 
-                            takes a <span class="code">RendererMap</span> argument. This allows the renderer to use the 
-                            appropriate renderer from the <span class="code">RendererMap</span> to render any nested 
-                            objects.
-                        </p>
-                        <h3>Added support for rendering exceptions</h3>
-                        <p>
-                            The <span class="code">DefaultRenderer</span> now has support for rendering exceptions to a 
-                            string. This includes nested exceptions. The <span class="code">RendererMap</span> is now 
-                            used to render exceptions in the <span class="code">LoggingEvent</span>. This allows the 
-                            rendering of specific exceptions to be enhanced by specific renderers.
-                        </p>
-                        <h3>Added ITriggeringEventEvaluator interface</h3>
-                        <p>
-                            This interface is used by <span class="code">SMTPAppender</span> and <span class="code">RemotingAppender</span>
-                            to determine if a <span class="code">LoggingEvent</span> meets a set of user defined 
-                            criteria. These appenders use the interface to determine whether or not to 
-                            deliver the current buffer of events to their listener. The interface is 
-                            implemented by the <span class="code">LevelEvaluator</span> class, which triggers above a 
-                            set level.
-                        </p>
-                        <h3>Added regex matching to the MDCFilter, NDCFilter and StringMatchFilter</h3>
-                        <p>
-                            The <span class="code">MDCFilter</span>, <span class="code">NDCFilter</span> and <span class="code">StringMatchFilter</span>
-                            can now be configured to use regex matches in addition to substring matches. 
-                            Set the <span class="code">RegexToMatch</span> property to use this feature.
-                        </p>
-                        <h3>Added XMLLayout</h3>
-                        <p>
-                            emits an XML element for each <span class="code">LoggingEvent</span>. This allows logging 
-                            events to be stored and manipulated as XML. The DTD for the XML emitted is in 
-                            the <span class="code">log4net-events.dtd</span>
-                        </p>
-                        <h3>Added support for &lt;logger&gt; and &lt;level&gt; elements in the 
-                            DOMConfigurator</h3>
-                        <p>
-                            As the <span class="code">Category</span> and <span class="code">Priority</span> classes have been 
-                            replaced by the <span class="code">Logger</span> and <span class="code">Level</span> classes. The <span class="code">DOMConfigurator</span>
-                            has been updated to allow the <span class="code">&lt;logger&gt;</span> and <span class="code">&lt;level&gt;</span>
-                            elements to be used in place of the <span class="code">&lt;category&gt;</span> and <span class="code">&lt;priority&gt;</span>
-                            elements. The old elements are still accepted for backward compatibility.
-                        </p>
-                        <h3>Added Threshold property to Hierarchy</h3>
-                        <p>
-                            Changed <span class="code">DisableXXX()</span> methods on <span class="code">Hierarchy</span> to a <span class="code">Threshold</span>
-                            property.
-                        </p>
-                        <h3>Added support for logging domains</h3>
-                        <p>
-                            The <span class="code">LogManager</span> supports multiple logging domains. The <span class="code">LogManager</span>
-                            uses an instance of the <span class="code">IRepositorySelector</span> class to map from 
-                            domains to <span class="code">ILoggerRepository</span> instances. The default implementation 
-                            is to have a separate <span class="code">ILoggerRepository</span> for each domain. When a 
-                            call is made to the static methods on <span class="code">LogManager</span> the domain can be 
-                            specified (as a string) or the domain can be inferred automatically from the 
-                            calling assembly. The default behavior is for each assembly loaded into the 
-                            process to have its own domain and <span class="code">ILoggerRepository</span>. These can 
-                            each be configured separately. This allows standalone assemblies to use log4net 
-                            without conflicting with other modules in the process. The domain for the 
-                            assembly is configured using metadata attributes defined on the assembly.
-                        </p>
-                        <h3>DOMConfigurator can set params to arbitrary objects</h3>
-                        <p>
-                            Using a new <span class="code">&lt;object&gt;</span> element, params can now be set to any 
-                            creatable object.
-                        </p>
+                <h3>Added 6 new examples</h3>
+                <h3>Split Category class into Logger and LogManager classes</h3>
+                <p>
+                    The instance methods from <span class="code">Category</span> have moved to the
+                    <span class="code">Logger</span>
+                    class. The static methods from <span class="code">Category</span> have moved to the
+                    <span class="code">LogManager</span>
+                    class. The <span class="code">Category</span> class still exists but for backward
+                    compatibility only. Changed interface <span class="code">ICategoryFactory</span> to
+                    <span class="code">ILoggerFactory</span>
+                    and the implementation class <span class="code">DefaultCategoryFactory</span> to <span class="code">
+                    DefaultLoggerFactory</span>.
+                </p>
+                <h3>Replaced Priority class with Level class</h3>
+                <p>
+                    The <span class="code">Priority</span> class has been replaced by the <span class="code">Level
+                </span> class.
+                    The <span class="code">Priority</span> class still exists for backward compatibility only.
+                    The <span class="code">Level</span> class implements a static pool of <span class="code">Level
+                </span> objects.
+                    The <span class="code">Level</span> class is sealed and serializable.
+                </p>
+                <h3>Added ILoggerRepository interface implemented by Hierarchy</h3>
+                <p>
+                    The <span class="code">Hierarchy</span> class implements the <span class="code">ILoggerRepository
+                </span> interface.
+                    This interface is used by the <span class="code">LogManager</span> class and therefore
+                    allows different implementations of <span class="code">ILoggerRepository</span> to be used.
+                </p>
+                <h3>Enhanced NUnit tests</h3>
+                <p>
+                    All the NUnit tests can be run using a single TestSuite: NUnitGUI
+                    log4net.LogManager+AllTests,log4net.dll.
+                </p>
+                <h3>Added support for serializing LoggingEvents</h3>
+                <p>
+                    The <span class="code">LoggingEvent</span> class is serializable. All local state is
+                    captured before serialization occurs. This now allows
+                    <span class="code">LoggingEvent</span>
+                    objects to be serialized between applications or machines.
+                </p>
+                <h3>Added RemotingAppender</h3>
+                <p>
+                    Delivers <span class="code">LoggingEvents</span> to a remote interface. This can be used to
+                    collect distributed logging into a single log file. There is an example
+                    remoting sink that receives the logging events, see
+                    <span class="code">examples\net\remoting\RemotingServer</span>
+                    for details.
+                </p>
+                <h3>Added support for rendering composite objects</h3>
+                <p>
+                    The <span class="code">IObjectRenderer</span> interface method <span class="code">DoRender</span> now
+                    takes a <span class="code">RendererMap</span> argument. This allows the renderer to use the
+                    appropriate renderer from the <span class="code">RendererMap</span> to render any nested
+                    objects.
+                </p>
+                <h3>Added support for rendering exceptions</h3>
+                <p>
+                    The <span class="code">DefaultRenderer</span> now has support for rendering exceptions to a
+                    string. This includes nested exceptions. The <span class="code">RendererMap</span> is now
+                    used to render exceptions in the <span class="code">LoggingEvent</span>. This allows the
+                    rendering of specific exceptions to be enhanced by specific renderers.
+                </p>
+                <h3>Added ITriggeringEventEvaluator interface</h3>
+                <p>
+                    This interface is used by <span class="code">SMTPAppender</span> and
+                    <span class="code">RemotingAppender</span>
+                    to determine if a <span class="code">LoggingEvent</span> meets a set of user defined
+                    criteria. These appenders use the interface to determine whether or not to
+                    deliver the current buffer of events to their listener. The interface is
+                    implemented by the <span class="code">LevelEvaluator</span> class, which triggers above a
+                    set level.
+                </p>
+                <h3>Added regex matching to the MDCFilter, NDCFilter and StringMatchFilter</h3>
+                <p>
+                    The <span class="code">MDCFilter</span>, <span class="code">NDCFilter</span> and
+                    <span class="code">StringMatchFilter</span>
+                    can now be configured to use regex matches in addition to substring matches.
+                    Set the <span class="code">RegexToMatch</span> property to use this feature.
+                </p>
+                <h3>Added XMLLayout</h3>
+                <p>
+                    emits an XML element for each <span class="code">LoggingEvent</span>. This allows logging
+                    events to be stored and manipulated as XML. The DTD for the XML emitted is in
+                    the
+                    <span class="code">log4net-events.dtd</span>
+                </p>
+                <h3>Added support for &lt;logger&gt; and &lt;level&gt; elements in the
+                    DOMConfigurator
+                </h3>
+                <p>
+                    As the <span class="code">Category</span> and <span class="code">Priority</span> classes have been
+                    replaced by the <span class="code">Logger</span> and <span class="code">Level</span> classes. The
+                    <span class="code">DOMConfigurator</span>
+                    has been updated to allow the <span class="code">&lt;logger&gt;</span> and
+                    <span class="code">&lt;level&gt;</span>
+                    elements to be used in place of the <span class="code">&lt;category&gt;</span> and
+                    <span class="code">&lt;priority&gt;</span>
+                    elements. The old elements are still accepted for backward compatibility.
+                </p>
+                <h3>Added Threshold property to Hierarchy</h3>
+                <p>
+                    Changed <span class="code">DisableXXX()</span> methods on <span class="code">Hierarchy</span> to a
+                    <span class="code">Threshold</span>
+                    property.
+                </p>
+                <h3>Added support for logging domains</h3>
+                <p>
+                    The <span class="code">LogManager</span> supports multiple logging domains. The
+                    <span class="code">LogManager</span>
+                    uses an instance of the <span class="code">IRepositorySelector</span> class to map from
+                    domains to <span class="code">ILoggerRepository</span> instances. The default implementation
+                    is to have a separate <span class="code">ILoggerRepository</span> for each domain. When a
+                    call is made to the static methods on <span class="code">LogManager</span> the domain can be
+                    specified (as a string) or the domain can be inferred automatically from the
+                    calling assembly. The default behavior is for each assembly loaded into the
+                    process to have its own domain and <span class="code">ILoggerRepository</span>. These can
+                    each be configured separately. This allows standalone assemblies to use log4net
+                    without conflicting with other modules in the process. The domain for the
+                    assembly is configured using metadata attributes defined on the assembly.
+                </p>
+                <h3>DOMConfigurator can set params to arbitrary objects</h3>
+                <p>
+                    Using a new <span class="code">&lt;object&gt;</span> element, params can now be set to any
+                    creatable object.
+                </p>
             </section>
-            
+
         </section>
     </body>
 </document>
