<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at 2017-01-02 -->
<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</title>
    <style type="text/css" media="all">
      @import url("../css/maven-base.css");
      @import url("../css/maven-theme.css");
      @import url("../css/site.css");
    </style>
    <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
      <meta name="author" content="Nicko Cadell" />
    <meta name="Date-Revision-yyyymmdd" content="20170102" />
    <meta http-equiv="Content-Language" content="en" />
        <meta name="keywords" content="log4net release notes, log4net" />
        </head>
  <body class="composite">
    <div id="banner">
                                      <a href="../../" id="bannerLeft">
                                                <img src="../images/ls-logo.jpg" alt="Apache Logging Services Project" />
                </a>
                    <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
                
                <div class="xleft">
        <span id="publishDate">Last Published: 2017-01-02</span>
                  &nbsp;| <span id="projectVersion">Version: 2.0.7</span>
                          |                           <a href="http://www.apache.org/" class="externalLink" title="Apache">Apache</a>
        &gt;
                          <a href="../../" title="Logging Services">Logging Services</a>
        &gt;
                          <a href=".././" title="log4net">log4net</a>
        &gt;
    Apache log4net &#x2013; Apache log4net: Release Notes
              </div>
            <div class="xright">        
                
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
                
                                <h5>Apache log4net</h5>
                  <ul>
                  <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">
            <strong>Release Notes</strong>
          </li>
                  <li class="none">
                          <a href="../license.html" title="License">License</a>
            </li>
          </ul>
                       <h5>Documentation</h5>
                  <ul>
                  <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>
                       <h5>Manual</h5>
                  <ul>
                  <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>
                       <h5>Community</h5>
                  <ul>
                  <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>
          </ul>
                       <h5>Development</h5>
                  <ul>
                  <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>
                       <h5>Project Documentation</h5>
                  <ul>
                                                                                                                                                              <li class="collapsed">
                          <a href="../project-info.html" title="Project Information">Project Information</a>
                  </li>
                                                                    <li class="collapsed">
                          <a href="../project-reports.html" title="Project Reports">Project Reports</a>
                  </li>
          </ul>
                       <h5>Apache</h5>
                  <ul>
                  <li class="none">
                          <a href="http://www.apache.org/" class="externalLink" title="Home">Home</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/licenses/" class="externalLink" title="License">License</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
            </li>
                  <li class="none">
                          <a href="http://www.apachecon.com" class="externalLink" title="Conferences">Conferences</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
      </a>
                   
                
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <!-- 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.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/log4net.Layout.PatternLayout.html">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/log4net.Util.PatternString.html">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/log4net.Appender.FileAppender.LockingModel.html">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>
    

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
        <div class="xright">Copyright &#169;                    2004-2017
                        <a href="http://www.apache.org">Apache Software Foundation</a>.
                  
                
       Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.</div><br />
        <div class="xright">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.</div>
        <div class="clear">
      </div>
    </div>
  </body>
</html>
