<!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 2015-11-07 -->
<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: Features</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="20151107" />
    <meta http-equiv="Content-Language" content="en" />
        <meta name="keywords" content="log4net features, 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: 2015-11-07</span>
                  &nbsp;| <span id="projectVersion">Version: 1.2.14</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: Features
              </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">
                          <a href="../release/release-notes.html" title="Release Notes">Release Notes</a>
            </li>
                  <li class="none">
                          <a href="../license.html" title="License">License</a>
            </li>
          </ul>
                       <h5>Documentation</h5>
                  <ul>
                  <li class="none">
            <strong>Features</strong>
          </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>
          </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_Features"></a>Apache log4net&#x2122; Features</h2>
        
            <a name="overview"></a>
<div class="section" id="overview">
<h2><a name="Overview"></a>Overview</h2>
                
<p>
                    log4net is a tool to help the programmer output log statements to a 
                    variety of output targets. In case of problems with an application, 
                    it is helpful to enable logging so that the problem can be located. 
                    With log4net it is possible to enable logging at runtime without 
                    modifying the application binary. The log4net package is designed so 
                    that log statements can remain in shipped code without incurring a 
                    high performance cost. It follows that the speed of logging (or 
                    rather not logging) is crucial.
                </p>
                
<p>
                    At the same time, log output can be so voluminous that it quickly becomes 
                    overwhelming. One of the distinctive features of log4net is the notion of 
                    hierarchical loggers. Using these loggers it is possible to selectively 
                    control which log statements are output at arbitrary granularity. 
                </p>
                
<p>
                    log4net is designed with two distinct goals in mind: speed and flexibility
                </p>
            </div>
            
            <a name="features"></a>
<div class="section" id="features">
<h2><a name="Features"></a>Features</h2>
                
<ul>
                    
<li>Support for multiple frameworks</li>
                    
<li>Output to multiple logging targets</li>
                    
<li>Hierarchical logging architecture</li>
                    
<li>XML Configuration</li>
                    
<li>Dynamic Configuration</li>
                    
<li>Logging Context</li>
                    
<li>Proven architecture</li>
                    
<li>Modular and extensible design</li>
                    
<li>High performance with flexibility</li>
                </ul>
            </div>

            <a name="frameworks"></a>
<div class="section" id="frameworks">
<h2><a name="Support_for_multiple_frameworks"></a>Support for multiple frameworks</h2>
                
<p>
                    log4net runs on all ECMA CLI 1.0 compatible runtimes.
                    log4net has specific builds for the following frameworks:
                </p>
                
<ul>
                    
<li>Microsoft&#xae; .NET Framework 1.0</li>
                    
<li>Microsoft .NET Framework 1.1</li>
                    
<li>Microsoft .NET Framework 2.0</li>
                    
<li>Microsoft .NET Framework 3.5</li>
                    
<li>Microsoft .NET Framework 4.0</li>
                    
<li>Microsoft .NET Framework 4.5</li>
                    
<li>Microsoft .NET Framework 3.5 Client Profile</li>
                    
<li>Microsoft .NET Framework 4.0 Client Profile</li>
                    
<li>Microsoft .NET Compact Framework 1.0<a href="#no-bin-support"><sup>*</sup></a></li>
                    
<li>Microsoft .NET Compact Framework 2.0<a href="#no-bin-support"><sup>*</sup></a></li>
                    
<li>Mono 1.0</li>
                    
<li>Mono 2.0</li>
                    
<li>Mono 3.5</li>
                    
<li>Mono 4.0</li>
                    
<li>Microsoft Shared Source CLI 1.0<a href="#no-bin-support"><sup>*</sup></a></li>
                    
<li>CLI 1.0 Compatible</li>
                </ul>
                
<p>The &quot;Client Profile&quot; builds are stripped down
                versions of the &quot;normal&quot; builds that don't contain any
                ASP.NET releated code - which for example means the
                <tt>%aspnet-*</tt> patterns and the
                <tt>AspNetTraceAppender</tt> are not available.</p>

                
<p style="font-size:smaller">
                  <a name="no-bin-support"><sup>*</sup></a>Not
                  supported by the binary release but can be built
                  from the source release.
                </p>
            </div>

            <a name="appenders"></a>
<div class="section" id="appenders">
<h2><a name="Output_to_multiple_logging_targets"></a>Output to multiple logging targets</h2>
                
<p>
                    log4net ships with the following appenders (not on all frameworks):
                </p>
                
<div class="table">
                    
<table border="0" class="bodyTable" cellspacing="0">
                        
<tr class="a">
                            
<th>
                                Type</th>
                            
<th>
                                Description</th>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.AdoNetAppender</td>
                            
<td>
                                Writes logging events to a database using either prepared statements or stored 
                                procedures.
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.AnsiColorTerminalAppender</td>
                            
<td>
                                Writes color highlighted logging events to a an ANSI terminal window.
                            </td>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.AspNetTraceAppender</td>
                            
<td>
                                Writes logging events to the ASP trace context. These can then be rendered at 
                                the end of the ASP page or on the ASP trace page.
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.ColoredConsoleAppender</td>
                            
<td>
                                Writes color highlighted logging events to the application's Windows Console.
                            </td>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.ConsoleAppender</td>
                            
<td>
                                Writes logging events to the application's Console. The events may go to either 
                                the standard our stream or the standard error stream.
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.DebugAppender</td>
                            
<td>
                                Writes logging events to the .NET  system.
                            </td>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.EventLogAppender</td>
                            
<td>
                                Writes logging events to the Windows Event Log.
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.FileAppender</td>
                            
<td>
                                Writes logging events to a file in the file system.
                            </td>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.LocalSyslogAppender</td>
                            
<td>
                                Writes logging events to the local syslog service (UNIX only).
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.MemoryAppender</td>
                            
<td>
                                Stores logging events in an in memory buffer.
                            </td>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.NetSendAppender</td>
                            
<td>
                                Writes logging events to the Windows Messenger service. These messages are 
                                displayed in a dialog on a users terminal.
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.OutputDebugStringAppender</td>
                            
<td>
                                Writes logging events to the debugger. If the application has no 
                                debugger, the system debugger displays the string. If the application has no 
                                debugger and the system debugger is not active, the message is ignored.
                            </td>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.RemoteSyslogAppender</td>
                            
<td>
                                Writes logging events to a remote syslog service using UDP networking.
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.RemotingAppender</td>
                            
<td>
                                Writes logging events to a remoting sink using .NET remoting.
                            </td>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.RollingFileAppender</td>
                            
<td>
                                Writes logging events to a file in the file system. The RollingFileAppender can 
                                be configured to log to multiple files based upon date or file size 
                                constraints.
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.SmtpAppender</td>
                            
<td>
                                Sends logging events to an email address.
                            </td>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.SmtpPickupDirAppender</td>
                            
<td>
                                Sends logging events to an email
                                address but writes the emails to a
                                configurable directory rather than
                                sending them directly via SMTP.
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.TelnetAppender</td>
                            
<td>
                                Clients connect via Telnet to receive logging events.
                            </td>
                        </tr>
                        
<tr class="b">
                            
<td>log4net.Appender.TraceAppender</td>
                            
<td>
                                Writes logging events to the .NET trace system.
                            </td>
                        </tr>
                        
<tr class="a">
                            
<td>log4net.Appender.UdpAppender</td>
                            
<td>
                                Sends logging events as connectionless UDP datagrams to a remote host or a 
                                multicast group using a UdpClient.
                            </td>
                        </tr>
                    </table>
                </div>
                
<p>A special log4net.Appender.ForwardingAppender can
                be used to wrap another appender, for example to
                attach additional filters.</p>
            </div>

            <a name="hierarchy"></a>
<div class="section" id="hierarchy">
<h2><a name="Hierarchical_logging_architecture"></a>Hierarchical logging architecture</h2>
                
<p>
                    Hierarchical logging is an ideal fit with component based development. 
                    Each component has its own of logger. When individually tested, the 
                    properties of these loggers may be set as the developer requires. 
                    When combined with other components, the loggers inherit the properties 
                    determined by the integrator of the components. One can selectively elevate 
                    logging priorities on one component without affecting the other components. 
                    This is useful when you need a detailed trace from just a single component 
                    without crowding the trace file with messages from other components. All 
                    this can be done through configuration files; no code changes are required.             
                </p>
            </div>

            <a name="xml-config"></a>
<div class="section" id="xml-config">
<h2><a name="XML_Configuration"></a>XML Configuration</h2>
                
<p>
                    log4net is configured using an XML configuration file. The configuration 
                    information can be embedded within other XML configuration files
                    (such as the application's .config file) or in a separate file. The
                    configuration is easily readable and updateable while retaining the
                    flexibility to express all configurations.
                </p>
                
<p>
                    Alternatively log4net can be configured programmatically.
                </p>
            </div>

            <a name="dynamic-config"></a>
<div class="section" id="dynamic-config">
<h2><a name="Dynamic_Configuration"></a>Dynamic Configuration</h2>
                
<p>
                    log4net can monitor its configuration file for changes and dynamically
                    apply changes made by the configurator. The logging levels, appenders, 
                    layouts, and just about everything else can be adjusted at runtime. 
                    In many cases it is possible to diagnose application issues without 
                    terminating the process in question. This can a very valuable tool in
                    investigating issues with deployed applications.
                </p>
            </div>

            <a name="context"></a>
<div class="section" id="context">
<h2><a name="Logging_Context"></a>Logging Context</h2>
                
<p>
                    log4net can be used to collect logging context data in a way that is transparent 
                    to the developer at the point of logging. The GlobalContext and the 
                    ThreadContext allow the application to store contextual data that is
                    attached to logging messages. For instance, in a web service, 
                    once the caller is authenticated the username of the caller could be 
                    stored in a ThreadContext property. This property would then be automatically 
                    logged as part of each subsequent logging message made from the same thread.
                </p>
            </div>

            <a name="history"></a>
<div class="section" id="history">
<h2><a name="Proven_architecture"></a>Proven architecture</h2>
                
<p>
                    log4net is based on the highly successful Apache log4j&#x2122; logging library,
                    in development since 1996. This popular and proven architecture has 
                    so far been ported to 12 languages.
                </p>
            </div>
            
        </div>
    

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
        <div class="xright">Copyright &#169;                    2004-2015
                        <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>
