<?xml version="1.0" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. 
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with 
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>

    <properties>
        <author email="nicko at apache dot org">Nicko Cadell</author>
        <title>Apache log4net: Release Notes</title>
    </properties>

    <meta name="keywords" content="log4net release notes, log4net" />

    <body>

        <section id="main" name="Apache log4net&#x2122; Release Notes">

          <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-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>
              </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-376'>LOG4NET-376</a>] -         Race condition in AbsoluteTimeDateFormatter
                </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" 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>

            <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>
                    </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>
                    </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>
                    </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>
                </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;

  &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/log4net.Layout.PatternLayout.html">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;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/log4net.Util.PatternString.html">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 <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/log4net.Appender.FileAppender.LockingModel.html">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>
                            <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>
                                        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>
                </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>
            </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="doc/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="doc/manual/example-config-appender.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="doc/manual/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>
            </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>
            </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>
            </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>
            </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>
            </section>
            
        </section>
    </body>
</document>
