<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

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

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<!-- Generated by Apache Maven Doxia at 2020-08-26 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>Apache log4net &#x2013; Apache log4net: Release Notes - Apache log4net</title>
		<link rel="stylesheet" href="../css/bootstrap.min.css" type="text/css" />
		<link rel="stylesheet" href="../css/site.css" type="text/css" />
		<script type="text/javascript" src="../js/jquery.min.js"></script>
		<script type="text/javascript" src="../js/bootstrap.min.js"></script>
		<script type="text/javascript" src="../js/prettify.min.js"></script>
		<script type="text/javascript" src="../js/site.js"></script>
      <meta name="author" content="Nicko Cadell" />
    <meta name="Date-Revision-yyyymmdd" content="20200826" />
    <meta http-equiv="Content-Language" content="en" />
		<meta name="keywords" content="log4net release notes, log4net" />
				</head>
	<body class="composite">
		<a href="https://logging.apache.org/">
			<img class="logo-left" src="../images/ls-logo.jpg" alt="Apache logging services logo" />
		</a>
		<!--img class="logo-right" src="../images/logo.png" alt="Apache log4net logo" /-->
		<div class="clear"></div>

		<div class="navbar">
			<div class="navbar-inner">
				<div class="container-fluid">
					<a class="brand" href="http://logging.apache.org/log4net/">Apache log4net &trade;</a>
						<ul class="nav">
						<li>
					
				
				<a href="https://wiki.apache.org/logging" class="external" target="_blank" title="Logging Wiki">Logging Wiki</a>
			</li>
					<li>
					
				
				<a href="https://www.apache.org/" class="external" target="_blank" title="Apache">Apache</a>
			</li>
					<li>
					
				
				<a href="https://logging.apache.org/" class="external" target="_blank" title="Logging Services">Logging Services</a>
			</li>
					<li>
					
				
				<a href="https://github.com/apache/logging-log4net/" class="external" target="_blank" title="GitHub">GitHub</a>
			</li>
		</ul>
				</div>
			</div>
		</div>

		<div class="container-fluid">
			<table class="layout-table">
				<tr>
					<td class="sidebar">
						<div class="well sidebar-nav">
										<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-home"></i>Apache log4net</li>
																						<li class="none">
									<a href="../index.html" title="About">About</a>
					</li>
 																<li class="none">
									<a href="../download_log4net.cgi" title="Download">Download</a>
					</li>
 																<li class="none">
									<a href="../release/security-reports.html" title="Security Reports">Security Reports</a>
					</li>
 																	<li class="none active">
									<a href="../release/release-notes.html" title="Release Notes">Release Notes</a>
					</li>
 																<li class="none">
									<a href="../license.html" title="License">License</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-file"></i>Documentation</li>
																						<li class="none">
									<a href="../release/features.html" title="Features">Features</a>
					</li>
 																<li class="none">
									<a href="../release/framework-support.html" title="Supported Frameworks">Supported Frameworks</a>
					</li>
 																<li class="none">
									<a href="../release/example-apps.html" title="Example Apps">Example Apps</a>
					</li>
 																<li class="none">
									<a href="../release/config-examples.html" title="Config Examples">Config Examples</a>
					</li>
 																<li class="none">
									<a href="../release/building.html" title="Building">Building</a>
					</li>
 																<li class="none">
									<a href="../release/faq.html" title="FAQ">FAQ</a>
					</li>
 																<li class="none">
									<a href="../release/howto/index.html" title="How Tos">How Tos</a>
					</li>
 																<li class="none">
									<a href="../release/sdk/index.html" title="SDK Reference">SDK Reference</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-book"></i>Manual</li>
																						<li class="none">
									<a href="../release/manual/introduction.html" title="Introduction">Introduction</a>
					</li>
 																<li class="none">
									<a href="../release/manual/configuration.html" title="Configuration">Configuration</a>
					</li>
 																<li class="none">
									<a href="../release/manual/contexts.html" title="Contexts">Contexts</a>
					</li>
 																<li class="none">
									<a href="../release/manual/plugins.html" title="Plugins">Plugins</a>
					</li>
 																<li class="none">
									<a href="../release/manual/repositories.html" title="Repositories">Repositories</a>
					</li>
 																<li class="none">
									<a href="../release/manual/internals.html" title="Internals">Internals</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-pencil"></i>For Contributors</li>
																						<li class="none">
									<a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
					</li>
 																<li class="none">
									<a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
					</li>
 																<li class="none">
									<a href="../source-repository.html" title="Repository">Repository</a>
					</li>
 																<li class="none">
									<a href="../integration.html" title="Continuous Integration">Continuous Integration</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-cog"></i>Project Reports</li>
																						<li class="none">
									<a href="../rat-report.html" title="RAT Report">RAT Report</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-info-sign"></i>Apache</li>
																						<li class="none">
					
				
				<a href="http://www.apache.org/" class="external" target="_blank" title="Home">Home</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apache.org/licenses/" class="external" target="_blank" title="License">License</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apache.org/foundation/sponsorship.html" class="external" target="_blank" title="Sponsorship">Sponsorship</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apache.org/foundation/thanks.html" class="external" target="_blank" title="Thanks">Thanks</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apache.org/security/" class="external" target="_blank" title="Security">Security</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apachecon.com" class="external" target="_blank" title="Conferences">Conferences</a>
					</li>
 								</ul>
							</div>
						<div id="poweredBy">
															<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
				<img class="poweredBy" alt="Built by Maven" src="../images/maven-feather.png" />
			</a>
									</div>
					</td>
					<td class="content">
						<!-- Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

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

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

    

        <a name="main"></a>
<div class="section" id="main">
<h2><a name="Apache_log4net_Release_Notes"></a>Apache log4net&#x2122; Release Notes</h2>

            <a name="a2.0.9"></a>
<div class="section" id="2.0.9">
<h2><a name="a2.0.9"></a>2.0.9</h2>
                
<p>
                    Apache log4net 2.0.9 adds <tt>netstandard2.0</tt> 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>
                <a name="a2.0.9-bug"></a>
<div class="section" id="2.0.9-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-563">LOG4NET-563</a>] Site styling copied from log4j</li>
                    </ul>
                </div>
            </div>
            <a name="a2.0.8"></a>
<div class="section" id="2.0.8">
<h2><a name="a2.0.8"></a>2.0.8</h2>
                
<p>
                    Apache log4net 2.0.8 fixes a
                    <tt>LockRecursionException</tt>
                    that could happen
                    inside the <tt>FileAppender</tt> under certain
                    circumstances. It also adds support for
                    <tt>LogicalThreadContext</tt>
                    to the .NET Standard
                    build based on <tt>AsyncLocal</tt> rather than
                    <tt>CallContext</tt>.
                </p>

                <a name="a2.0.8-bug"></a>
<div class="section" id="2.0.8-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-551">LOG4NET-551</a>] -
                            LockRecursionException when using File Appenders
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-554">LOG4NET-554</a>] -
                            LogicalThreadContext was removed in .NETStandard
                        </li>
                    </ul>
                </div>

                <a name="a2.0.8-new"></a>
<div class="section" id="2.0.8-new">
<h2><a name="New_Features"></a>New Features</h2>
                    
<ul>
                        
<li>[<a class="externalLink" 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>
                </div>
            </div>

            <a name="a2.0.7"></a>
<div class="section" id="2.0.7">
<h2><a name="a2.0.7"></a>2.0.7</h2>
                
<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>

                <a name="a2.0.7-bug"></a>
<div class="section" id="2.0.7-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-540">LOG4NET-540</a>] - nuget
                            dependencies for .NET Standard leak into net46
                        </li>
                    </ul>
                </div>
            </div>

            <a name="a2.0.6"></a>
<div class="section" id="2.0.6">
<h2><a name="a2.0.6"></a>2.0.6</h2>

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

                <a name="a2.0.6-bug"></a>
<div class="section" id="2.0.6-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-508">LOG4NET-508</a>] - NAnt release
                            build is not optimized
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-512">LOG4NET-512</a>] - Thread
                            safety
                            issue in Hierarchy.cs
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-527">LOG4NET-527</a>] - broken link
                            on
                            config-examples.html
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-529">LOG4NET-529</a>] - Possible
                            thread-safety bug in LoggingEvent
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-536">LOG4NET-536</a>] - Can't
                            build
                            for NETCF-2.0
                        </li>
                    </ul>
                </div>
                <a name="a2.0.6-enh"></a>
<div class="section" id="2.0.6-enh">
<h2><a name="Improvements"></a>Improvements</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-530">LOG4NET-530</a>] - Use UTC
                            internally to avoid ambiguous timestamps
                        </li>
                    </ul>
                </div>

                <a name="a2.0.6-new"></a>
<div class="section" id="2.0.6-new">
<h2><a name="New_Features"></a>New Features</h2>
                    
<ul>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-511">LOG4NET-511</a>] - API to flush
                            appenders
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-526">LOG4NET-526</a>] - Add
                            appSetting
                            conversion pattern to PatternString
                        </li>
                    </ul>
                </div>
            </div>

            <a name="a1.2.15"></a>
<div class="section" id="1.2.15">
<h2><a name="a1.2.15"></a>1.2.15</h2>
                <a name="a1.2.15-bug"></a>
<div class="section" id="1.2.15-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-462">LOG4NET-462</a>] -
                            ReadOnlyPropertiesDictionary not thread safe
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-488">LOG4NET-488</a>] - Fix tests
                            build
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-489">LOG4NET-489</a>] -
                            AdoNetAppender
                            fails after upgrade to 2.0.4
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-490">LOG4NET-490</a>] -
                            InterProcessLock
                            Tests fail
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-494">LOG4NET-494</a>] -
                            ArgumentOutOfRange with SQLite
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-495">LOG4NET-495</a>] - Error when
                            BufferSize is &gt;1, parameter already defined
                        </li>
                    </ul>
                </div>
            </div>

            <a name="a1.2.14"></a>
<div class="section" id="1.2.14">
<h2><a name="a1.2.14"></a>1.2.14</h2>
                <a name="a1.2.14-bug"></a>
<div class="section" id="1.2.14-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-408">LOG4NET-408</a>] - Correction
                            on
                            InterProcessLock
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-443">LOG4NET-443</a>] -
                            Logger.CallAppenders
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-447">LOG4NET-447</a>] -
                            MemoryAppender
                            class is not thread safe
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-455">LOG4NET-455</a>] -
                            LogicalThreadContext does not flow correctly through async/await
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-479">LOG4NET-479</a>] - Cannot
                            compile
                            log4net.vs2008
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-484">LOG4NET-484</a>] -
                            System.ObjectDisposedException with FileAppender+InterProcessLock
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-485">LOG4NET-485</a>] -
                            RollingFileAppender cannot be used by multiple process
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-486">LOG4NET-486</a>] - Rolling File
                            Appender with 'maxSizeRollBackups' and 'datePattern' does not detect
                            existing
                            logs initially
                        </li>
                    </ul>
                </div>

                <a name="a1.2.14-enh"></a>
<div class="section" id="1.2.14-enh">
<h2><a name="Improvements"></a>Improvements</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-456">LOG4NET-456</a>] - Include
                            debug
                            symbol files in release packages
                        </li>
                        
<li>[<a class="externalLink" 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>
                </div>

                <a name="a1.2.14-new"></a>
<div class="section" id="1.2.14-new">
<h2><a name="New_Features"></a>New Features</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-473">LOG4NET-473</a>] - Option for
                            file
                            extension in SmtpPickupDirAppender
                        </li>
                    </ul>
                </div>
            </div>

            <a name="a1.2.13"></a>
<div class="section" id="1.2.13">
<h2><a name="a1.2.13"></a>1.2.13</h2>

                <a name="a1.2.13-bug"></a>
<div class="section" id="1.2.13-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-132">LOG4NET-132</a>] - Environment
                            variables are mistakenly case sensitive on windows
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-376">LOG4NET-376</a>] - Race
                            condition
                            in AbsoluteTimeDateFormatter
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-393">LOG4NET-393</a>] - Using
                            dynamic
                            methods with log4net causes NullReferenceException in StackFrameItem
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-399">LOG4NET-399</a>] - Does not
                            build
                            for Compact Framework 2.0
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-404">LOG4NET-404</a>] - assemblies
                            for
                            .NET 3.5 are missing ILogExtensions
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-405">LOG4NET-405</a>] - SmtpAppender
                            encoding changes
                        </li>
                    </ul>

                </div>

                <a name="a1.2.13-enh"></a>
<div class="section" id="1.2.13-enh">
<h2><a name="Improvements"></a>Improvements</h2>

                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-394">LOG4NET-394</a>] - Lambda-based
                            ILog-Extensions should catch errors
                        </li>
                    </ul>

                </div>
            </div>

            <a name="a1.2.12"></a>
<div class="section" id="1.2.12">
<h2><a name="a1.2.12"></a>1.2.12</h2>

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

                <a name="a1.2.12-bug"></a>
<div class="section" id="1.2.12-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-202">LOG4NET-202</a>] -
                            AdoNetAppenderParameter.Size Property is not optional
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-218">LOG4NET-218</a>] - Test
                            StringFormatTest.TestFormatString fails
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-277">LOG4NET-277</a>] - Registering
                            a
                            custom Object Renderer in configuration file
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-284">LOG4NET-284</a>] - In a
                            multithreaded application, duplicate messages are output.
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-294">LOG4NET-294</a>] - Exception
                            rendering object type [System.OutOfMemoryException]
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-317">LOG4NET-317</a>] -
                            LogicalThreadContext sometimes doesn't follow CallContext's logical thread
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-322">LOG4NET-322</a>] - Conditional
                            compilation symbols for .net4 Release
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-323">LOG4NET-323</a>] -
                            AbsoluteTimeDateFormatter caches string representation of now too aggressively
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-341">LOG4NET-341</a>] -
                            RemotingAppender
                            Error
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-343">LOG4NET-343</a>] -
                            ArgumentOutOfRangeException in log4net hierarchy on &quot;.&quot; logger name
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-348">LOG4NET-348</a>] -
                            System.IndexOutOfRangeException when StackFrameLevel is greater then StackFrames length
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-352">LOG4NET-352</a>] - CS0419
                            during
                            build with Mono &gt;2.6
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-370">LOG4NET-370</a>] -
                            RemoteSyslogAppender doesn't properly handle newline in log message
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-371">LOG4NET-371</a>] - Log with
                            formatting doesn't call custom renderers (IObjectRenderer)
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-375">LOG4NET-375</a>] - typo /
                            misspelling in log message
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-378">LOG4NET-378</a>] - Rolling log
                            file
                            is overwritten when application is restarted
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-379">LOG4NET-379</a>] -
                            NullReferenceException in FileAppender when file is not filled.
                        </li>
                        
<li>[<a class="externalLink" 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>
                </div>

                <a name="a1.2.12-enh"></a>
<div class="section" id="1.2.12-enh">
<h2><a name="Improvements"></a>Improvements</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-222">LOG4NET-222</a>] - [PATCH]
                            Improve
                            AnsiColorTerminalAppender to support marking colors as Light
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-223">LOG4NET-223</a>] - [PATCH]
                            Improve
                            AnsiColorTerminalAppender to support marking colors as Light
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-232">LOG4NET-232</a>] - Use
                            ReaderWriterLockSlim instead of ReaderWriterLock.
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-259">LOG4NET-259</a>] - Log4Net does
                            not
                            create a new tab in Chainsaw
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-283">LOG4NET-283</a>] -
                            OnlyOnceErrorHandler is not subclass-friendly
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-292">LOG4NET-292</a>] - Managed
                            ColoredConsoleAppender for .NET2/Mono.
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-315">LOG4NET-315</a>] - SmtpAppender
                            -
                            Add support for ignoring certificate errors
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-318">LOG4NET-318</a>] - log4net
                            doesn't
                            pass verification
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-334">LOG4NET-334</a>] - Appender
                            Faill
                            over
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-354">LOG4NET-354</a>] - E-mail
                            encoding
                            configuration setting for SmtpAppender
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-386">LOG4NET-386</a>] - Can't
                            access
                            ThreadContext properties
                        </li>
                    </ul>
                </div>

                <a name="a1.2.12-new"></a>
<div class="section" id="1.2.12-new">
<h2><a name="New_Features"></a>New Features</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-290">LOG4NET-290</a>] - Add
                            Lambda-based
                            ILog-Extensions (embedded log.IsEnabled)
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-342">LOG4NET-342</a>] - Add a way to
                            prevent silent failure
                        </li>
                    </ul>
                </div>
            </div>

            <a name="a1.2.11"></a>
<div class="section" id="1.2.11">
<h2><a name="a1.2.11"></a>1.2.11</h2>
                
<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 &quot;old&quot; 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>

                <a name="a1.2.11-breaking"></a>
<div class="section" id="1.2.11-breaking">
<h2><a name="Breaking_Changes"></a>Breaking Changes</h2>
                    
<p>
                        The signature of
                        <tt>ILoggerFactory.CreateLogger</tt>
                        has changed.
                    </p>
                </div>

                <a name="a1.2.11-bug"></a>
<div class="section" id="1.2.11-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-76">LOG4NET-76</a>] -
                            TextWriterAdapter
                            is not thread safe
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-79">LOG4NET-79</a>] -
                            SecurityException
                            thrown in LogicalThreadContextProperties GetProperties
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-81">LOG4NET-81</a>] -
                            LoggerRepositorySkeleton's OnConfigurationChanged method always raises its event with
                            EventArgs.Empty instead of passing through its EventArgs parameter.
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-113">LOG4NET-113</a>] -
                            SystemInfo.GetTypeFromString() raises NotSupportedException
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-128">LOG4NET-128</a>] - Either
                            documentation is incorrect or a bug in SmtpAppender
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-129">LOG4NET-129</a>] -
                            EventLogAppender
                            EventID parsing does not handle Active Properties properly
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-135">LOG4NET-135</a>] - Bad example
                            code
                            in documentation
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-137">LOG4NET-137</a>] -
                            log4net.Filter.LevelMatchFilter does not work anymore
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-146">LOG4NET-146</a>] -
                            System.NullReferenceException on FindAndRender object
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-158">LOG4NET-158</a>] -
                            XMLConfigurator.ConfigureAndWatch() leaks resources if called multiple times
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-167">LOG4NET-167</a>] -
                            ArrayOutOfBounds
                            Exception in MemoryAppender.getEvents()
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-212">LOG4NET-212</a>] - Threading
                            bug in
                            the PatternConverter.cs
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-214">LOG4NET-214</a>] -
                            EventLogAppender
                            should also use config file to set EventId
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-215">LOG4NET-215</a>] - Exception on
                            Convert for return %class{1} name
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-229">LOG4NET-229</a>] - Japanese
                            characters get garbled with log4net.Layout.XmlLayoutSchemaLog4j
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-241">LOG4NET-241</a>] - Issue
                            tracking
                            page does not link to project
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-242">LOG4NET-242</a>] - Download
                            page
                            does not have link to KEYS file
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-244">LOG4NET-244</a>] -
                            SmtpAppender.To
                            Property has incorrect delimiter
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-265">LOG4NET-265</a>] -
                            RemoteFileAppender Tests fail on Windows 7
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-274">LOG4NET-274</a>] - log4net
                            doesn't
                            log when running a .Net 4.0 Windows application built in Release mode
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-297">LOG4NET-297</a>] -
                            AppenderSkeleton.RequiresLayout docs and implementation don't match
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-300">LOG4NET-300</a>] - FilterTest
                            doesn't
                            compile for .Net 2.0
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-310">LOG4NET-310</a>] -
                            EventLogAppender's
                            ActivateOptions throws SecurityException on Vista/Win2k3 and later when not run as
                            administrator
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-311">LOG4NET-311</a>] - MinimalLock
                            and
                            AppendToFile=false don't work together in trunk's FileAppender
                        </li>
                    </ul>
                </div>

                <a name="a1.2.11-enh"></a>
<div class="section" id="1.2.11-enh">
<h2><a name="Improvements"></a>Improvements</h2>
                    
<ul>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-66">LOG4NET-66</a>] -
                            PreserveFileExtension with StaticFileName
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-77">LOG4NET-77</a>] - A small
                            improvement of log4net.Layout.Pattern.ExceptionPatternConverter - added 'Option'
                            propery
                            support
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-88">LOG4NET-88</a>] - support .NET
                            2.0
                            connectionStrings configuration section
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-96">LOG4NET-96</a>] - Expose the
                            Message, Exception, and ErrorCode properties of OnlyOnceErrorHandler.
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-97">LOG4NET-97</a>] - Make Hierarchy's
                            ILoggerFactory aware of the repository's LevelMap
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-100">LOG4NET-100</a>] -
                            IPAddressConverter improvement for .NET 2 or .NET 3
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-131">LOG4NET-131</a>] - Add Cc and
                            Bcc
                            support to SmtpAppender
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-164">LOG4NET-164</a>] - using a
                            named
                            mutex for file appenders
                        </li>
                        
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-170">LOG4NET-170</a>] -
                            Documentation
                            improvement re: fixing and active properties
                        </li>
                        
<li>[<a class="externalLink" 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>

                </div>
                <a name="a1.2.11-new"></a>
<div class="section" id="1.2.11-new">
<h2><a name="New_Features"></a>New Features</h2>
                    
<ul>
                        
<li>The various static <tt>Configure</tt> methods of the <tt>Configurator</tt> classes
                            now
                            return collections of configuration messages rather than <tt>void</tt>.
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-92">LOG4NET-92</a>] - Build for
                                Compact Framework 2.0
                            </li>
                            
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-107">LOG4NET-107</a>] - Added
                                ExceptionEvaluator
                            </li>
                            
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-115">LOG4NET-115</a>] - Expand
                                UserAppDataPath in filename
                            </li>
                            
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-116">LOG4NET-116</a>] - allow
                                smtp
                                to ssl authenticate and with certificates.
                            </li>
                            
<li>[<a class="externalLink" 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 class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-155">LOG4NET-155</a>] - Add
                                TimeEvaluator
                            </li>
                            
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-168">LOG4NET-168</a>] - New
                                property
                                ReplyTo address for the SmtpAppender required
                            </li>
                            
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-176">LOG4NET-176</a>] -
                                Buildable
                                with VS 2008 and .NET FW 3.5
                            </li>
                            
<li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/LOG4NET-233">LOG4NET-233</a>] - Support
                                .NET
                                4.0 including Client Profile
                            </li>
                        </li>
                    </ul>
                </div>

            </div>

            <a name="a1.2.10"></a>
<div class="section" id="1.2.10">
<h2><a name="a1.2.10"></a>1.2.10</h2>

                <a name="a1.2.10-bug"></a>
<div class="section" id="1.2.10-bug">
<h2><a name="Bug_Fixes"></a>Bug Fixes</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-21">LOG4NET-21</a>] -
                            RemotingAppender
                            fails once NDC becomes empty
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-22">LOG4NET-22</a>] - XmlLayout
                            allows
                            output of invalid control characters
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-25">LOG4NET-25</a>] -
                            RollingFileAppender
                            can fail if RollOverIfDateBoundaryCrossing required
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-28">LOG4NET-28</a>] - AdoNetAppender
                            does
                            not support inserting NULL into columns
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-29">LOG4NET-29</a>] -
                            LevelMatchFilter
                            should return Neutral when no match is found
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-32">LOG4NET-32</a>] - AdoNetAppender
                            losing first entry
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-35">LOG4NET-35</a>] - Exception
                            rendering
                            ThreadContextStack if null value pushed into stack
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-41">LOG4NET-41</a>] -
                            RollingFileAppender
                            roll over date fail
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-42">LOG4NET-42</a>] - Serialised
                            LoggingEvent does not preserve the Fix flags
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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 class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-49">LOG4NET-49</a>] -
                            CountingQuietTextWriter does not count strings written with WriteLine
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-50">LOG4NET-50</a>] -
                            Process.StartTime
                            hangs on some systems
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-63">LOG4NET-63</a>] - 1.2.9.0
                            Documentation typos
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-65">LOG4NET-65</a>] - Unhandled
                            SecurityException exception for FileIOPermission while loading configuration file
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-67">LOG4NET-67</a>] - CVE-2006-0743
                            Security vulnerability in LocalSyslogAppender
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-70">LOG4NET-70</a>] - CoreDll.dll
                            referenced with different capitalisation
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-73">LOG4NET-73</a>] -
                            ADONetAppender.ActivateOptions() leaks database connection when called multiple times
                        </li>
                    </ul>
                </div>

                <a name="a1.2.10-new"></a>
<div class="section" id="1.2.10-new">
<h2><a name="New_Features"></a>New Features</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-11">LOG4NET-11</a>] - Add Flush
                            command
                            to API
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-24">LOG4NET-24</a>] - Programmatic
                            flush
                            of BufferingAppenderSkeleton buffer
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-46">LOG4NET-46</a>] - Support
                            appenders
                            that can output multiple events efficiently
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-51">LOG4NET-51</a>] - WmiAppender
                        </li>
                    </ul>
                </div>

                <a name="a1.2.10-enh"></a>
<div class="section" id="1.2.10-enh">
<h2><a name="Improvements"></a>Improvements</h2>
                    
<ul>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-3">LOG4NET-3</a>] - Support per event
                            patterns in FileAppender File name
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-13">LOG4NET-13</a>] - Allow
                            SMTPAppender
                            to have replaceable parameters in Subject
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-15">LOG4NET-15</a>] - Email high
                            &quot;importance&quot; priority setting with SmtpAppender
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-17">LOG4NET-17</a>] - Line-wrapping
                            Appender Layouts
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" 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=&quot;foo&quot;
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-52">LOG4NET-52</a>] - Allow XML
                            configurator to set properties of type Object
                        </li>
                        
<li>[<a class="externalLink" 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 class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-56">LOG4NET-56</a>] - Support
                            rendering
                            IEnumerator objects as well as ICollections
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-58">LOG4NET-58</a>] - Support clean
                            build
                            on .NET 2.0
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-72">LOG4NET-72</a>] - Performance of
                            ILog.xxxFormat methods
                        </li>
                        
<li>[<a class="externalLink" href="http://issues.apache.org/jira/browse/LOG4NET-74">LOG4NET-74</a>] - Change
                            MemoryAppender member variables to protected
                        </li>
                    </ul>
                </div>

            </div>

            <a name="a1.2.9"></a>
<div class="section" id="1.2.9">
<h2><a name="a1.2.9_Beta"></a>1.2.9 Beta</h2>

                <a name="a1.2.9-breaking"></a>
<div class="section" id="1.2.9-breaking">
<h2><a name="Breaking_Changes"></a>Breaking Changes</h2>
                    
<div class="section">
<h3><a name="Renamed_namespaces"></a>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>
                    </div>
<div class="section">
<h3><a name="Renamed_config_classes_and_attributes"></a>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>
                    </div>
<div class="section">
<h3><a name="Fixed_pascal_casing_of_type_names"></a>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>
                    </div>
<div class="section">
<h3><a name="Layouts_changed_to_stream_their_output_to_a________________________TextWriter"></a>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>
                    </div>
<div class="section">
<h3><a name="C_style_string_escapes_no_longer_supported_by_config_parser"></a>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>
                </div></div>

                <a name="a1.2.9-new"></a>
<div class="section" id="1.2.9-new">
<h2><a name="New_Features"></a>New Features</h2>
                    
<div class="section">
<h3><a name="New_CLI_build"></a>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>
                    </div>
<div class="section">
<h3><a name="Logging_contexts"></a>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>
                    </div>
<div class="section">
<h3><a name="PatternLayout________________________customization_and_long_pattern_names"></a>
                        <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">
                        
<div>
<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>
                    </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>
                    </div>
<div class="section">
<h3><a name="PatternString________________________for_pattern_based_configuration"></a>
                        <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">
                        
<div>
<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>
                    </div>
                    
<p>
                        The code for the
                        <span class="code">SpecialFolderPatternConverter</span>
                        is as follows:
                    </p>
                    
<div class="syntax">
                        
<div>
<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>
                    </div>
                    
<p>
                        For full details see the SDK Reference entry: <a href="sdk/html/T_log4net_Util_PatternString_htm">
                        log4net.Util.PatternString</a>.
                    </p>
                    </div>
<div class="section">
<h3><a name="Loading_configuration_from_a_URI"></a>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>
                    </div>
<div class="section">
<h3><a name="Support_for_No-Touch_deployment"></a>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>
                    </div>
<div class="section">
<h3><a name="Config_file_parser_enhancements"></a>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">
                        
<div>
<pre class="code">
                            &lt;layout type=&quot;log4net.Layout.PatternLayout&quot; value=&quot;%message%newline&quot;
                            /&gt;
                        </pre></div>
                    </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>
                    </div>
<div class="section">
<h3><a name="a.NET_string_formatting_syntax"></a>.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>
                    </div>
<div class="section">
<h3><a name="Customizable_levels"></a>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>
                    </div>
<div class="section">
<h3><a name="Per-appender_security_contexts"></a>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>
                    </div>
<div class="section">
<h3><a name="Added_new_appenders"></a>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>
                    </div>
<div class="section">
<h3><a name="Added_new_LoggerMatchFilter_filter"></a>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>
                    </div>
<div class="section">
<h3><a name="Pluggable_file_locking_models_for_the________________________FileAppender"></a>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>
                    </div>
<div class="section">
<h3><a name="RollingFileAppender________________________roll_once"></a>
                        <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>
                    </div>
<div class="section">
<h3><a name="SmtpAppender________________________authentication"></a>
                        <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>
                    </div>
<div class="section">
<h3><a name="AdoNetAppender________________________ReconnectOnError"></a>
                        <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>
                    </div>
<div class="section">
<h3><a name="UdpAppender________________________hostname_support"></a>
                        <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>
                </div></div>

                <a name="a1.2.9-other"></a>
<div class="section" id="1.2.9-other">
<h2><a name="Other_Changes"></a>Other Changes</h2>
                    
<div class="section">
<h3><a name="FxCop_compliance"></a>FxCop compliance</h3>
                    
<p>
                        Updates to bring the internal code in line with the current FxCop rules.
                    </p>
                    </div>
<div class="section">
<h3><a name="Separate_NUnit_tests"></a>Separate NUnit tests</h3>
                    
<p>
                        Moved the NUnit tests into a separate project, <span class="code">log4net.Tests</span>.
                    </p>
                    </div>
<div class="section">
<h3><a name="Bug_Fixes"></a>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>
                </div></div>

            </div>

            <a name="a1.2.0b8"></a>
<div class="section" id="1.2.0b8">
<h2><a name="a1.2.0_Beta_8"></a>1.2.0 Beta 8</h2>
                
<div class="section">
<h3><a name="Changed_assembly_name_to____________________log4net"></a>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>
                </div>
<div class="section">
<h3><a name="Combined_Release_and_ReleaseStrong_builds"></a>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>
                </div>
<div class="section">
<h3><a name="New_Appender:_ColoredConsoleAppender"></a>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>
                </div>
<div class="section">
<h3><a name="New_Appender:_SmtpPickupDirAppender"></a>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>
                </div>
<div class="section">
<h3><a name="New_Layout:_XmlLayoutSchemaLog4j"></a>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>
                </div>
<div class="section">
<h3><a name="New_PatternLayout_conversion_characters"></a>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>
                </div>
<div class="section">
<h3><a name="Types_specified_in_the_config_file_are_now_loaded_ignoring_case"></a>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>
                </div>
<div class="section">
<h3><a name="Fine_grained_fixing_for_buffered_events"></a>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>
                </div>
<div class="section">
<h3><a name="Code_updated_inline_with_FxCop_1.21"></a>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>
                </div>
<div class="section">
<h3><a name="EventLogAppender_32K_Limit"></a>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>
            </div></div>

            <a name="a1.2.0b7"></a>
<div class="section" id="1.2.0b7">
<h2><a name="a1.2.0_Beta_7"></a>1.2.0 Beta 7</h2>
                
<div class="section">
<h3><a name="Updated_to_support_the_Microsoft_.NET_Framework_1.1_Final"></a>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>
                </div>
<div class="section">
<h3><a name="Features_document"></a>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>
                </div>
<div class="section">
<h3><a name="Hierarchy_disabled_until_it_is_configured"></a>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>
                </div>
<div class="section">
<h3><a name="New_examples_in_VisualBasic.NET_JScript_and_Managed_C"></a>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>
                </div>
<div class="section">
<h3><a name="Code_and_Documentation_Updates"></a>Code and Documentation Updates</h3>
                
<p>
                    Code fixes. Documentation and manual updates.
                    See the ChangeLog for more information.
                </p>
                </div>
<div class="section">
<h3><a name="Added_document_with_example_appender_configurations"></a>Added document with example appender configurations</h3>
                
<p>
                    See the
                    <a href="config-examples.html">Example Appender Configuration</a>
                    document for more information.
                </p>
            </div></div>

            <a name="a1.2.0b6"></a>
<div class="section" id="1.2.0b6">
<h2><a name="a1.2.0_Beta_6"></a>1.2.0 Beta 6</h2>
                
<div class="section">
<h3><a name="Added_support_for_multiple_frameworks"></a>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 border="0" class="bodyTable" cellspacing="0">
                        <colgroup>
                            <col style="text-align: left;" />
                        </colgroup>
                        
<tr class="a">
                            
<th>
                                Framework
                            </th>
                            
<th>
                                Website
                            </th>
                        </tr>
                        
<tr class="b" style="vertical-align: top;">
                            
<td>Microsoft .NET Framework 1.1 Final Beta (1.1.4322)</td>
                            
<td>
                                <a class="externalLink" href="http://msdn.microsoft.com/net">http://msdn.microsoft.com/net</a>
                            </td>
                        </tr>
                        
<tr class="a" style="vertical-align: top;">
                            
<td>Microsoft .NET Compact Framework 1.0 (1.0.5000)</td>
                            
<td>
                                <a class="externalLink" href="http://msdn.microsoft.com/vstudio/device/compactfx.asp">
                                    http://msdn.microsoft.com/vstudio/device/compactfx.asp
                                </a>
                            </td>
                        </tr>
                        
<tr class="b" style="vertical-align: top;">
                            
<td>Mono 0.23</td>
                            
<td>
                                <a class="externalLink" href="http://www.go-mono.org">http://www.go-mono.org</a>
                            </td>
                        </tr>
                        
<tr class="a" style="vertical-align: top;">
                            
<td>Microsoft Shared Source CLI 1.0</td>
                            
<td>
                                <a class="externalLink" 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>
                </div>
<div class="section">
<h3><a name="New_build_system_using_NAnt"></a>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>
                </div>
<div class="section">
<h3><a name="New_source_code__distribution_layout"></a>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>
                </div>
<div class="section">
<h3><a name="Removed_DomainAttribute.UseDefaultDomain_property"></a>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>
                </div>
<div class="section">
<h3><a name="Updated_configuration_file_parser"></a>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">
                    
<div>
<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>
                </div>
                
<p>
                    becomes:
                </p>
                
<div class="syntax">
                    
<div>
<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>
                </div>
                </div>
<div class="section">
<h3><a name="Support_for_event_ID"></a>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>
                </div>
<div class="section">
<h3><a name="Updated_ADONetAppender"></a>Updated ADONetAppender</h3>
                
<p></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></p>
                </div>
<div class="section">
<h3><a name="Support_for_front-end_extension"></a>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 border="0" class="bodyTable" cellspacing="0">
                        <colgroup>
                            <col style="width: 50%; text-align: left;" />
                            <col style="width: 50%; text-align: left;" />
                        </colgroup>
                        
<tr class="a">
                            
<th>
                                Extension
                            </th>
                            
<th>
                                Description
                            </th>
                        </tr>
                        
<tr class="b" style="vertical-align: top;">
                            
<td>log4net.Ext.Trace</td>
                            
<td>Adds trace logging methods</td>
                        </tr>
                        
<tr class="a" style="vertical-align: top;">
                            
<td>log4net.Ext.EventID</td>
                            
<td>Adds additional eventId parameter to all methods</td>
                        </tr>
                    </table>
                </div>
                
<p></p>
                </div>
<div class="section">
<h3><a name="Added_ForwardingAppender"></a>Added ForwardingAppender</h3>
                
<p>Forwards events to multiple sub appenders after applying filter rules.</p>
                </div>
<div class="section">
<h3><a name="Added_BufferingForwardingAppender"></a>Added BufferingForwardingAppender</h3>
                
<p>Forward events to sub appenders after buffering them.</p>
                </div>
<div class="section">
<h3><a name="Added_ASPNetTraceAppender"></a>Added ASPNetTraceAppender</h3>
                
<p>Logs events to the ASP.NET trace system.</p>
                </div>
<div class="section">
<h3><a name="Added_NetSendAppender"></a>Added NetSendAppender</h3>
                
<p>Delivers logging events using the Windows Messenger service.</p>
                </div>
<div class="section">
<h3><a name="Added_UdpAppender"></a>Added UdpAppender</h3>
                
<p>Sends logging events as connectionless UDP datagrams to a remote host or a
                    multicast group.
                </p>
                </div>
<div class="section">
<h3><a name="Removed_obsolete_methods"></a>Removed obsolete methods</h3>
                </div>
<div class="section">
<h3><a name="Lots_of_updates_to_improve_our_compliance_with_FxCop"></a>Lots of updates to improve our compliance with FxCop</h3>
                </div>
<div class="section">
<h3><a name="Improved_SDK_documentation"></a>Improved SDK documentation</h3>
            </div></div>

            <a name="a1.2.0b5"></a>
<div class="section" id="1.2.0b5">
<h2><a name="a1.2.0_Beta_5"></a>1.2.0 Beta 5</h2>
                
<div class="section">
<h3><a name="Fixed_Exception_thrown_when_DOM_Configurator_called_with_a_null_XML____________________Element."></a>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>
                </div>
<div class="section">
<h3><a name="Made_level_lookup_case_insensitive"></a>Made level lookup case insensitive</h3>
                </div>
<div class="section">
<h3><a name="Prevented_the_Hierarchys_Threshold_level_from_being_set_to_a_null_reference"></a>Prevented the Hierarchy's Threshold level from being set to a null reference</h3>
            </div></div>

            <a name="a1.2.0b4"></a>
<div class="section" id="1.2.0b4">
<h2><a name="a1.2.0_Beta_4"></a>1.2.0 Beta 4</h2>
                
<div class="section">
<h3><a name="Added_event_specific_properties_to_the_logging_event_object"></a>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>
                </div>
<div class="section">
<h3><a name="Added_a_plugin_framework"></a>Added a plugin framework</h3>
                
<p>An <span class="code">IPlugin</span> interface can be attached to any repository.
                </p>
                </div>
<div class="section">
<h3><a name="A_new_RemoteLoggingServerPlugin_plugin_acts_as_the_server_for_the____________________RemotingAppender"></a>A new RemoteLoggingServerPlugin plugin acts as the server for the
                    RemotingAppender
                </h3>
                </div>
<div class="section">
<h3><a name="Updated_the_core_log4net_framework_to_work_in_an_environment_with_no____________________permissions"></a>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>
                </div>
<div class="section">
<h3><a name="Added_support_for_domain_aliasing_using_the_AliasDomainAttribute"></a>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>
                </div>
<div class="section">
<h3><a name="Added_events_for_repository_creation_configuration_change_configuration_reset____________________and_repository_shutdown"></a>Added events for repository creation, configuration change, configuration reset
                    and repository shutdown
                </h3>
                </div>
<div class="section">
<h3><a name="Added_LevelMap_to_the_ILoggerRepository_interface"></a>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>
                </div>
<div class="section">
<h3><a name="Moved_hierarchy_specific_config_file_parser_to_new_DOMHierarchyConfigurator_class"></a>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>
                </div>
<div class="section">
<h3><a name="Added_OnlyFixPartialEventData_property_to_the_buffered_appenders"></a>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>
                </div>
<div class="section">
<h3><a name="XML_entity_references_are_supported_in_the_XML_config_file."></a>XML entity references are supported in the XML config file.</h3>
                </div>
<div class="section">
<h3><a name="Added_support_for_expanding_environment_variables_in_param_values"></a>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>
                </div>
<div class="section">
<h3><a name="Upgraded_to_use_NUnit_2.0"></a>Upgraded to use NUnit 2.0</h3>
                </div>
<div class="section">
<h3><a name="File_appenders_can_specify_the_encoding_to_use_for_the_file"></a>File appenders can specify the encoding to use for the file</h3>
                </div>
<div class="section">
<h3><a name="Added_strong_named_configuration"></a>Added strong named configuration</h3>
            </div></div>

            <a name="a1.2.0b3"></a>
<div class="section" id="1.2.0b3">
<h2><a name="a1.2.0_Beta_3"></a>1.2.0 Beta 3</h2>
                
<div class="section">
<h3><a name="Added_log4net.Ext.Trace_extension"></a>Added log4net.Ext.Trace extension</h3>
                
<p>This is a separate assembly that adds a trace level to log4net.</p>
                </div>
<div class="section">
<h3><a name="The_default_log_file_output_directory_is_now_the_application_base_directory_not____________________the_current_directory"></a>The default log file output directory is now the application base directory not
                    the current directory
                </h3>
                </div>
<div class="section">
<h3><a name="Added_MemoryAppender"></a>Added MemoryAppender</h3>
                
<p>Stores all the logging events in an in-memory buffer.</p>
                </div>
<div class="section">
<h3><a name="Moved_the_Hierarchy_implementation_into_a_separate_namespace"></a>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>
                </div>
<div class="section">
<h3><a name="Refactored_the_DOMConfigurator_and_BasicConfigurator"></a>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>
                </div>
<div class="section">
<h3><a name="Replaced_the_DOMConfiguratorAttribute_UseExecutableDomain____________________property_with_UseDefaultDomain"></a>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>
                </div>
<div class="section">
<h3><a name="A_few_good_bug_fixes"></a>A few good bug fixes!</h3>
            </div></div>

            <a name="a1.2.0b2"></a>
<div class="section" id="1.2.0b2">
<h2><a name="a1.2.0_Beta_2"></a>1.2.0 Beta 2</h2>
                
<div class="section">
<h3><a name="Added_ADONetAppender"></a>Added ADONetAppender</h3>
                
<p>Thanks to TechnologyOneCorp.com.</p>
                </div>
<div class="section">
<h3><a name="Added_TraceLogAssembly_extensibility_example"></a>Added TraceLogAssembly extensibility example</h3>
                </div>
<div class="section">
<h3><a name="Lots_of_bug_fixes"></a>Lots of bug fixes</h3>
            </div></div>

            <a name="a1.2.0b1"></a>
<div class="section" id="1.2.0b1">
<h2><a name="a1.2.0_Beta_1"></a>1.2.0 Beta 1</h2>
                
<div class="section">
<h3><a name="Added_6_new_examples"></a>Added 6 new examples</h3>
                </div>
<div class="section">
<h3><a name="Split_Category_class_into_Logger_and_LogManager_classes"></a>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>
                </div>
<div class="section">
<h3><a name="Replaced_Priority_class_with_Level_class"></a>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>
                </div>
<div class="section">
<h3><a name="Added_ILoggerRepository_interface_implemented_by_Hierarchy"></a>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>
                </div>
<div class="section">
<h3><a name="Enhanced_NUnit_tests"></a>Enhanced NUnit tests</h3>
                
<p>
                    All the NUnit tests can be run using a single TestSuite: NUnitGUI
                    log4net.LogManager+AllTests,log4net.dll.
                </p>
                </div>
<div class="section">
<h3><a name="Added_support_for_serializing_LoggingEvents"></a>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>
                </div>
<div class="section">
<h3><a name="Added_RemotingAppender"></a>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>
                </div>
<div class="section">
<h3><a name="Added_support_for_rendering_composite_objects"></a>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>
                </div>
<div class="section">
<h3><a name="Added_support_for_rendering_exceptions"></a>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>
                </div>
<div class="section">
<h3><a name="Added_ITriggeringEventEvaluator_interface"></a>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>
                </div>
<div class="section">
<h3><a name="Added_regex_matching_to_the_MDCFilter_NDCFilter_and_StringMatchFilter"></a>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>
                </div>
<div class="section">
<h3><a name="Added_XMLLayout"></a>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>
                </div>
<div class="section">
<h3><a name="Added_support_for_logger_and_level_elements_in_the____________________DOMConfigurator"></a>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>
                </div>
<div class="section">
<h3><a name="Added_Threshold_property_to_Hierarchy"></a>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>
                </div>
<div class="section">
<h3><a name="Added_support_for_logging_domains"></a>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>
                </div>
<div class="section">
<h3><a name="DOMConfigurator_can_set_params_to_arbitrary_objects"></a>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>
            </div></div>

        </div>
    

					</td>
				</tr>
			</table>
		</div>

		<div class="footer">
							<p>Copyright &copy; 2004-2020 <a class="external" href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.</p>
				<p>Apache log4net, Apache, log4net, the Apache feather logo, the Apache Logging Services project logo and the Built by Maven logo are trademarks of The Apache Software Foundation.</p>
				<p>Site powered by <a class="external" href="http://getbootstrap.com/">Twitter Bootstrap</a>. Icons from <a class="external" href="http://glyphicons.com/">Glyphicons Free</a>.</p>
			</div>
		</div>
	</body>
</html>
