<?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="2.0.12" name="2.0.12">
              <p>
              Apache log4net 2.0.12 is a minor fix release to address reported issues on
              non-windows platforms.
              </p>
              <section id="2.0.12-bug" name="Bug Fixes">
                <ul>
                  <li>Addresses the issues reported in LOG4NET-652 and LOG4NET-653 whereby
                      logging could throw a PlatformNotSupported exception when the username
                      is required within logs on non-Windows platforms. The implemented
                      behavior is to fall back, where possible, on Environment.UserName
                      or provide text that the facility is not supported.
                  </li>
                </ul>
              </section>
            </section>
            <section id="2.0.11" name="2.0.11">
                Apache log4net 2.0.11 fixes incorrect version strings within the released
                binaries and contains some minor fixes to correctly dispose of StreamWriters
                used during log flushing, thanks to community member @NicholasNoise
            </section>
            <section id="2.0.10" name="2.0.10">
                <p>
                    Apache log4net 2.0.10 improves <code>netstandard2.0</code> support
                    thanks to community member @NicholasNoise.
                </p>
                <section id="2.0.10-bug" name="Bug Fixes">
                    <ul>
                        <li>
                            [<a href="https://issues.apache.org/jira/browse/LOG4NET-575">LOG4NET-575</a>]
                            Addresses CVE-2018-1285 by cherry-picking the fix from
                            Dominik Psenner, reported by Karthik Balasundaram, as it already
                            existed in the the develop branch
                        </li>
                    </ul>
                </section>
            </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-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.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.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>

                <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.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>

                <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.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>

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