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