<!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 Apr 12, 2013 -->
<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: Examples</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="20130412" />
    <meta http-equiv="Content-Language" content="en" />
        <meta name="keywords" content="log4net examples, 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: 2013-04-12</span>
                  &nbsp;| <span id="projectVersion">Version: 1.2.12-SNAPSHOT</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: Examples
              </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">
                          <a href="../release/features.html" title="Features">Features</a>
            </li>
                  <li class="none">
                          <a href="../release/framework-support.html" title="Supported Frameworks">Supported Frameworks</a>
            </li>
                  <li class="none">
            <strong>Example Apps</strong>
          </li>
                  <li class="none">
                          <a href="../release/config-examples.html" title="Config Examples">Config Examples</a>
            </li>
                  <li class="none">
                          <a href="../release/building.html" title="Building">Building</a>
            </li>
                  <li class="none">
                          <a href="../release/faq.html" title="FAQ">FAQ</a>
            </li>
                  <li class="none">
                          <a href="../release/howto/index.html" title="How Tos">How Tos</a>
            </li>
                  <li class="none">
                          <a href="../release/sdk/index.html" title="SDK Reference">SDK Reference</a>
            </li>
          </ul>
                       <h5>Manual</h5>
                  <ul>
                  <li class="none">
                          <a href="../release/manual/introduction.html" title="Introduction">Introduction</a>
            </li>
                  <li class="none">
                          <a href="../release/manual/configuration.html" title="Configuration">Configuration</a>
            </li>
                  <li class="none">
                          <a href="../release/manual/contexts.html" title="Contexts">Contexts</a>
            </li>
                  <li class="none">
                          <a href="../release/manual/plugins.html" title="Plugins">Plugins</a>
            </li>
                  <li class="none">
                          <a href="../release/manual/repositories.html" title="Repositories">Repositories</a>
            </li>
                  <li class="none">
                          <a href="../release/manual/internals.html" title="Internals">Internals</a>
            </li>
          </ul>
                       <h5>Community</h5>
                  <ul>
                  <li class="none">
                          <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
            </li>
          </ul>
                       <h5>Development</h5>
                  <ul>
                  <li class="none">
                          <a href="../source-repository.html" title="Repository">Repository</a>
            </li>
                  <li class="none">
                          <a href="../integration.html" title="Continuous Integration">Continuous Integration</a>
            </li>
          </ul>
                       <h5>Project Documentation</h5>
                  <ul>
                                                                                                                                                                                                                                                        <li class="collapsed">
                          <a href="../project-info.html" title="Project Information">Project Information</a>
                  </li>
                                                                    <li class="collapsed">
                          <a href="../project-reports.html" title="Project Reports">Project Reports</a>
                  </li>
          </ul>
                       <h5>Apache</h5>
                  <ul>
                  <li class="none">
                          <a href="http://www.apache.org/" class="externalLink" title="Home">Home</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/licenses/" class="externalLink" title="License">License</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
            </li>
                  <li class="none">
                          <a href="http://www.apachecon.com" class="externalLink" title="Conferences">Conferences</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
      </a>
                   
        
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <!-- Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. 
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with 
the License. You may obtain a copy of the License at

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

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

    
        <a name="main"></a><div class="section"><h2 id="main">Apache log4net&#x2122; Examples</h2>
        
            <a name="overview"></a><div class="section"><h2 id="overview">Overview</h2>
                <p>
                    <b>The following examples are only available in the log4net source download, not
                    on-line. To obtain the examples <a href="../download.html">download</a> the log4net source release.
                    </b>
                </p>
            </div>
            
            <a name="building"></a><div class="section"><h2 id="building">Building Examples</h2>
                <a name="building-1"></a><div class="section"><h2 id="building-1">Building An Example</h2>
                    <p>
                        A single example can be build by running <span class="code">nant</span> from
                        the example directory.
                    </p>
                    <p>
                        For example running <span class="code">nant</span> in the 
                        <span class="code">examples\net\1.0\Tutorials\ConsoleApp\cs</span> directory
                        will build the C# version of the Microsoft&#xae; .NET 1.0 ConsoleApp example.
                    </p>
                    <p>
                        <span class="code">nant</span> can be run in any directory containing a
                        <span class="code">nant.build</span> file. The typical behavior of the build file
                        is to build all projects under the current directory.
                    </p>
                    <p>
                        For example running <span class="code">nant</span> in the 
                        <span class="code">examples\net\1.1</span> directory
                        will build all the examples for the .NET 1.1 platform.
                    </p>
                </div>
                
                <a name="building-all"></a><div class="section"><h2 id="building-all">Building All Examples</h2>
                    <p>
                        To build all the examples either run <span class="code">nant</span> in the 
                        <span class="code">examples</span> directory or you can specify the
                        <span class="code">compile-examples</span> target to the main log4net nant build.
                    </p>
                </div>
                
                <a name="building-vsnet"></a><div class="section"><h2 id="building-vsnet">Visual Studio .NET</h2>
                    <p>
                        There are Visual Studio .NET 2002 project files for the .NET 1.0 framework.
                        The solution files for C# and VB are in the examples\net\1.0
                        folder.
                    </p>
                    <p>
                        For the Managed C++ project there is a Visual Studio .NET 2003 project file 
                        in the examples\net\1.1 folder.
                    </p>
                </div>
            </div>
            
            <a name="examples"></a><div class="section"><h2 id="examples">Examples</h2>
            
                <a name="consoleapp"></a><div class="section"><h2 id="consoleapp">Tutorial - ConsoleApp</h2>
                    <p>
                        ConsoleApp shows how to write a simple console application that initializes 
                        logging and logs various events.
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>MONO 1.0</b>: 
                            C#
                        </li>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#, 
                            VB
                        </li>
                        <li>
                            <b>.NET 1.1</b>: 
                            C++, 
                            JScript.NET
                        </li>
                        <li>
                            <b>.NET Compact Framework 1.0</b>: 
                            C#, 
                            VB
                        </li>
                        <li>
                            <b>SSCLI 1.0</b>: 
                            JScript.NET
                        </li>
                    </ul>
                    <p>
                        To run this example execute <span class="code">ConsoleApp.exe</span> from the build output directory.
                    </p>
                </div>
                
                <a name="webapp"></a><div class="section"><h2 id="webapp">Tutorial - WebApp</h2>
                    <p>
                        ConsoleApp shows how to write a simple ASP.NET web application that initializes 
                        logging and logs various events.
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#, 
                            VB
                        </li>
                    </ul>
                    <p>
                        To run this example you need to have an ASP.NET container application to
                        host the web application, for example IIS. In IIS create a new virtual
                        directory pointing to the WebApp src directory. Configure IIS to recognize
                        this virtual directory as an application. Open up a web browser, navigate to
                        the virtual directory and to the <span class="code">WebForm1.aspx</span> page within it.
                    </p>
                </div>
                
                <a name="remotingclient"></a><div class="section"><h2 id="remotingclient">Remoting - RemotingClient</h2>
                    <p>
                        The RemotingClient application is a simple console application that configures
                        log4net with the RemotingAppender. This appender will attempt to deliver the
                        logging events to a remoting listener. This example should be run in conjunction 
                        with the RemotingServer.
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                        To run this example execute <span class="code">RemotingClient.exe</span> from the build output directory.
                    </p>
                </div>
                
                <a name="remotingserver"></a><div class="section"><h2 id="remotingserver">Remoting - RemotingServer</h2>
                    <p>
                        The RemotingServer application is a simple console application that listens for
                        logging events from a remote RemotingAppender and then logs them through the
                        local log4net instance. This example should be run in conjunction 
                        with the RemotingClient.
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                        To run this example execute <span class="code">RemotingServer.exe</span> from the build output directory.
                        While this process is running execute the <span class="code">RemotingClient.exe</span> program on
                        the same machine. The logging events from the client are transferred to the server.
                    </p>
                </div>
                
                <a name="rep-simple"></a><div class="section"><h2 id="rep-simple">Repository - SimpleModule</h2>
                    <p>
                        The SimpleModule is a class library that is intended to be used as part of
                        the SimpleApp example,
                        This class library uses the <span class="code">log4net.Config.Repository</span>
                        attribute to create a separate configuration space from other assemblies.
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>MONO 1.0</b>: 
                            C#
                        </li>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#, 
                            VB
                        </li>
                        <li>
                            <b>.NET 1.1</b>: 
                            JScript.NET
                        </li>
                        <li>
                            <b>SSCLI 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                        This library is intended to be used as part of the SimpleApp example.
                    </p>
                </div>
                
                <a name="rep-shared"></a><div class="section"><h2 id="rep-shared">Repository - SharedModule</h2>
                    <p>
                        The SharedModule is a class library that is intended to be used as part of
                        the SimpleApp example,
                        This class library uses log4net but does not attempt to configure logging.
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>MONO 1.0</b>: 
                            C#
                        </li>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#, 
                            VB
                        </li>
                        <li>
                            <b>.NET 1.1</b>: 
                            JScript.NET
                        </li>
                        <li>
                            <b>SSCLI 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                        This library is intended to be used as part of the SimpleApp example.
                    </p>
                </div>
                
                <a name="rep-app"></a><div class="section"><h2 id="rep-app">Repository - SimpleApp</h2>
                    <p>
                        The SimpleApp example uses the SimpleModule and SharedModule to demonstrate
                        the ways in which multiple assemblies within the same process may be 
                        separately configured.
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>MONO 1.0</b>: 
                            C#
                        </li>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#, 
                            VB
                        </li>
                        <li>
                            <b>.NET 1.1</b>: 
                            JScript.NET
                        </li>
                        <li>
                            <b>SSCLI 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                        To run this example execute <span class="code">SimpleApp.exe</span> from the build output directory.
                    </p>
                </div>
                
                <a name="eventidlogapp"></a><div class="section"><h2 id="eventidlogapp">Extensibility - EventIDLogApp</h2>
                    <p>
                        The EventIDLogApp example demonstrates using the log4net.Ext.EventID extension.
                        The extension needs to be built separately from the 
                        <span class="code">extensions\net\1.0\log4net.Ext.EventID</span> directory.
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                        To run this example execute <span class="code">EventIDLogApp.exe</span> from the build output directory.
                    </p>
                </div>
                
                <a name="tracelogapp"></a><div class="section"><h2 id="tracelogapp">Extensibility - TraceLogApp</h2>
                    <p>
                        The TraceLogApp example demonstrates using the log4net.Ext.Trace extension.
                        The extension needs to be built separately from the 
                        <span class="code">extensions\net\1.0\log4net.Ext.Trace</span> directory.
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                        To run this example execute <span class="code">TraceLogApp.exe</span> from the build output directory.
                    </p>
                </div>
                
                <a name="sampleappenders"></a><div class="section"><h2 id="sampleappenders">SampleAppenders</h2>
                    <p>
                        This project includes the following example appenders.
                    </p>
                    <ul>
                        <li>
                            AsyncAppender
                        </li>
                        <li>
                            FastDbAppender
                        </li>
                        <li>
                            FireEventAppender
                        </li>
                        <li>
                            MessageBoxAppender
                        </li>
                        <li>
                            MessageObjectExpanderAppender
                        </li>
                        <li>
                            MsmqAppender
                        </li>
                        <li>
                            PatternFileAppender
                        </li>
                        <li>
                            SimpleSmtpAppender
                        </li>
                    </ul>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                        To run this example execute <span class="code">SampleAppendersApp.exe</span> from the build output directory.
                    </p>
                </div>
                
                <a name="samplelayouts"></a><div class="section"><h2 id="samplelayouts">SampleLayouts</h2>
                    <p>
                        This project includes the following example layouts.
                    </p>
                    <ul>
                        <li>
                            ForwardingLayout
                        </li>
                        <li>
                            LineWrappingLayout
                        </li>
                    </ul>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                        To run this example execute <span class="code">SampleLayoutsApp.exe</span> from the build output directory.
                    </p>
                </div>                
                
                <a name="perf-notlogging"></a><div class="section"><h2 id="perf-notlogging">Performance - NotLogging</h2>
                    <p>
                        The NotLogging example benchmarks the performance of log4net logging statements in
                        user code in various scenarios including when logging is disabled. 
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>MONO 1.0</b>: 
                            C#
                        </li>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#, 
                            VB
                        </li>
                    </ul>
                    <p>
                    </p>
                </div>
                
                <a name="wmiappender"></a><div class="section"><h2 id="wmiappender">WmiAppender</h2>
                    <p>
                        The WmiAppender sample shows an example appender that fires events through
                        Windows Management Instrumentation. 
                    </p>
                    <p>
                        This example is available for the following platforms and languages. If a version
                        is not available for your chosen platform and language combination then select the
                        nearest platform for the appropriate language.
                    </p>
                    <ul>
                        <li>
                            <b>.NET 1.0</b>: 
                            C#
                        </li>
                    </ul>
                    <p>
                    </p>
                </div>
                
            </div>
            
        </div>
    

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