nicko 2005/01/25 11:31:20
Modified: xdocs/src/stylesheets project.xml
Added: xdocs/src/release release-notes.xml
Removed: . releasenotes.html
Log:
Moved releasenotes.html to xdocs xml format
Revision Changes Path
1.4 +1 -0 logging-log4net/xdocs/src/stylesheets/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/logging-log4net/xdocs/src/stylesheets/project.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- project.xml 20 Jan 2005 13:47:17 -0000 1.3
+++ project.xml 25 Jan 2005 19:31:20 -0000 1.4
@@ -41,6 +41,7 @@
<menu name="log4net 1.2 Documentation">
<item name="Features" href="/release/features.html" />
<item name="Supported Frameworks"
href="/release/framework-support.html" />
+ <item name="Release Notes"
href="/release/release-notes.html" />
<item name="Example Apps"
href="/release/example-apps.html" />
<item name="Config Examples"
href="/release/config-examples.html" />
<item name="Building" href="/release/building.html" />
1.1 logging-log4net/xdocs/src/release/release-notes.xml
Index: release-notes.xml
===================================================================
<?xml version="1.0" ?>
<!--
Copyright 2004-2005 The Apache Software Foundation
Licensed 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>log4net Release Notes</title>
</properties>
<meta name="keywords" content="log4net release notes, log4net" />
<body>
<section name="log4net Release Notes">
<sectionMenu name="Contents" />
<section name="1.2.0 Beta 8">
<ul>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<h3>New Layout:
XmlLayoutSchemaLog4j</h3>
<p>
This new layout formats
the logging events as XML which complies with
the log4j 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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
</ul>
</section>
<section name="1.2.0 Beta 7">
<ul>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<h3>Code and Documentation
Updates</h3>
<p>
Code fixes.
Documentation and manual updates.
See the ChangeLog for
more information.
</p>
</li>
<li>
<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>
</li>
</ul>
</section>
<section name="1.2.0 Beta 6">
<ul>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<h3>New source code &
distribution layout</h3>
<p>
The source code &
distribution layout has been updated to support the new
build environment and
multiple target frameworks.
</p>
</li>
<li>
<h3>Removed
DomainAttribute.UseDefaultDomain property</h3>
<p>
Updated default
behaviour 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
behaviour
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 behaviour is now
sufficient, you do not
need to specify the <span class="code">DomainAttribute</span> at all.
</p>
</li>
<li>
<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"><object></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">
<appender>
<param name="Evaluator">
<object type="log4net.spi.LevelEvaluator">
<constructor>
<param type="log4net.spi.Level"
value="DEBUG"/>
</constructor>
</object>
</param>
</appender></pre></div>
<p>
becomes:
</p>
<div class="syntax"><pre
class="code">
<appender>
<evaluator type="log4net.spi.LevelEvaluator">
<threshold value="DEBUG"/>
</evaluator>
</appender></pre></div>
</li>
<li>
<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>
</li>
<li>
<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 />
</li>
<li>
<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 />
</li>
<li>
<h3>Added
ForwardingAppender</h3>
<p>Forwards events to multiple
sub appenders after applying filter rules.</p>
</li>
<li>
<h3>Added
BufferingForwardingAppender</h3>
<p>Forward events to sub
appenders after buffering them.</p>
</li>
<li>
<h3>Added
ASPNetTraceAppender</h3>
<p>Logs events to the ASP.NET
trace system.</p>
</li>
<li>
<h3>Added NetSendAppender</h3>
<p>Delivers logging events
using the Windows Messenger service.</p>
</li>
<li>
<h3>Added UdpAppender</h3>
<p>Sends logging events as
connectionless UDP datagrams to a remote host or a
multicast group.</p>
</li>
<li>
<h3>Removed obsolete
methods</h3>
</li>
<li>
<h3>Lots of updates to improve
our compliance with FxCop</h3>
</li>
<li>
<h3>Improved SDK
documentation</h3>
</li>
</ul>
</section>
<section name="1.2.0 Beta 5">
<ul>
<li>
<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>
</li>
<li>
<h3>Made level lookup case
insensitive</h3>
</li>
<li>
<h3>Prevented the Hierarchy's
Threshold level from being set to a null reference</h3>
</li>
</ul>
</section>
<section name="1.2.0 Beta 4">
<ul>
<li>
<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>
</li>
<li>
<h3>Added a plugin
framework</h3>
<p>An <span
class="code">IPlugin</span> interface can be attached to any repository.</p>
</li>
<li>
<h3>A new
RemoteLoggingServerPlugin plugin acts as the server for the
RemotingAppender</h3>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<h3>Added events for repository
creation, configuration change, configuration reset
and repository
shutdown</h3>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<h3>XML entity references are
supported in the XML config file.</h3>
</li>
<li>
<h3>Added support for expanding
environment variables in <param> 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>
</li>
<li>
<h3>Upgraded to use NUnit
2.0</h3>
</li>
<li>
<h3>File appenders can specify
the encoding to use for the file</h3>
</li>
<li>
<h3>Added strong named
configuration</h3>
</li>
</ul>
</section>
<section name="1.2.0 Beta 3">
<ul>
<li>
<h3>Added log4net.Ext.Trace
extension</h3>
<p>This is a separate assembly
that adds a trace level to log4net.</p>
</li>
<li>
<h3>The default log file output
directory is now the application base directory not
the current
directory</h3>
</li>
<li>
<h3>Added MemoryAppender</h3>
<p>Stores all the logging
events in an in-memory buffer.</p>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<h3>A few good bug fixes!</h3>
</li>
</ul>
</section>
<section name="1.2.0 Beta 2">
<ul>
<li>
<h3>Added ADONetAppender</h3>
<p>Thanks to
TechnologyOneCorp.com.</p>
</li>
<li>
<h3>Added TraceLogAssembly
extensibility example</h3>
</li>
<li>
<h3>Lots of bug fixes</h3>
</li>
</ul>
</section>
<section name="1.2.0 Beta 1">
<ul>
<li>
<h3>Added 6 new examples</h3>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<h3>Enhanced NUnit tests</h3>
<p>
All the NUnit tests can
be run using a single TestSuite: NUnitGUI
log4net.LogManager+AllTests,log4net.dll.
</p>
</li>
<li>
<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
serialised between applications or machines.
</p>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<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>
</li>
<li>
<h3>Added support for
<logger> and <level> 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"><logger></span> and <span
class="code"><level></span>
elements to be used in
place of the <span class="code"><category></span> and <span
class="code"><priority></span>
elements. The old
elements are still accepted for backward compatibility.
</p>
</li>
<li>
<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>
</li>
<li>
<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 behaviour 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>
</li>
<li>
<h3>DOMConfigurator can set
params to arbitrary objects</h3>
<p>
Using a new <span
class="code"><object></span> element, params can now be set to any
creatable object.
</p>
</li>
</ul>
</section>
</section>
</body>
</document>
