<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright 2004-2006 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.
-->

<!-- Content Stylesheet for Site -->

    
    

        
<!-- start the processing -->
    <!-- ====================================================================== -->
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
    <!-- Main Page Section -->
    <!-- ====================================================================== -->
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

                                                    <meta name="author" value="Nicko Cadell">
            <meta name="email" value="nicko at apache dot org">
            
           
                                     <meta  name="keywords"  content="log4net downloads, log4net download, log4net"  />
 
                         
            <link href="./css/site.css" rel="stylesheet" type="text/css"/>
            
							<link href="./css/style.css" rel="stylesheet" type="text/css"/>
			
            <title>log4net - log4net Downloads</title>
            
                    </head>

        <body 
            bgcolor="#ffffff"
            text="#000000"
            link="#525D76"
                >       
           <!-- START Header table --> 
                             <table class="banner" border="0">
     <tr>
       <td valign="top">
         <a href="http://logging.apache.org/">
           <img src="http://logging.apache.org/images/ls-logo.jpg" border="0"/>
         </a>
       </td>
       <td align="right">
                  </td>
     </tr>
   </table>
              <!-- END Header table --> 


	   <div class="centercol">
        
           <!-- START main table --> 
                

	                                                                       <h1><a id="main"></a>log4net Downloads</h1>
    <div class="i1">
                                        <h2><a id="status"></a>Project Status</h2>
    <div class="i1">
                                    <p>
					log4net is an effort undergoing incubation at the Apache Software 
					Foundation (ASF), sponsored by the Apache Logging Services project. 
					Incubation is required of all newly accepted projects until a further 
					review indicates that the infrastructure, communications, and decision 
					making process have stabilized in a manner consistent with other 
					successful ASF projects. While incubation status is not necessarily a 
					reflection of the completeness or stability of the code, it does 
					indicate that the project has yet to be fully endorsed by the ASF.
				</p>
                                                <p>
					As log4net is undergoing incubation these releases are <i>not</i>
					officially endorsed by the ASF.
				</p>
                      </div>
                                                    <h2><a id="stable"></a>Stable Releases</h2>
    <div class="i1">
                                    <p>
					The following stable releases are available:
				</p>
                                                <ul>
					<li>none</li>
				</ul>
                      </div>
                                                    <h2><a id="developer"></a>Developer Releases</h2>
    <div class="i1">
                                    <p>
					The following development snapshots are available:
				</p>
                                                <ul>
					<li>
						<a href="http://cvs.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip">incubating-log4net-1.2.9-beta.zip</a>
						[<a href="http://cvs.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip.asc">PGP</a>]
						[<a href="http://cvs.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip.md5">MD5</a>]
					</li>
				</ul>
                      </div>
                                                    <h2><a id="archive"></a>Archive Releases</h2>
    <div class="i1">
                                    <p>
					Previous releases of log4net are available from the sourceforge site:
				</p>
                                                <ul>
					<li><a href="http://sourceforge.net/project/showfiles.php?group_id=31983&amp;release_id=171808">Download at sourceforge.net</a></li>
				</ul>
                      </div>
                      </div>
                                                


                           
                <!-- FOOTER -->
<p>&nbsp;</p>

                    <div align="center"><font color="#525D76" size="-1"><em>
                    Copyright &#169; 
		    			2004-2006,
		    		    		    	Apache Software Foundation
		                        </em></font></div>
             <!-- END main table --> 

           </div>

           <!-- LEFT SIDE NAVIGATION -->
             <!-- ============================================================ -->
  <div class="leftcol">
               <div class="menu_header">Apache</div>
              	 <div class="menu_item">    <a href="http://www.apache.org">Apache Home</a>
</div>
              	 <div class="menu_item">    <a href="http://logging.apache.org/">Logging Services</a>
</div>
                  <div class="menu_header">log4net Project</div>
              	 <div class="menu_item">    <a href="./index.html">About</a>
</div>
              	 <div class="menu_item">    <a href="./license.html">License</a>
</div>
              	 <div class="menu_item">    <a href="./support.html">Support</a>
</div>
              	 <div class="menu_item">    <a href="./roadmap.html">Roadmap</a>
</div>
              	 <div class="menu_item">    <a href="./contributing.html">Contributing</a>
</div>
              	 <div class="menu_item">    <a href="./history.html">History</a>
</div>
              	 <div class="menu_item">    <a href="./downloads.html">Downloads</a>
</div>
                  <div class="menu_header">log4net 1.2 Documentation</div>
              	 <div class="menu_item">    <a href="./release/features.html">Features</a>
</div>
              	 <div class="menu_item">    <a href="./release/framework-support.html">Supported Frameworks</a>
</div>
              	 <div class="menu_item">    <a href="./release/release-notes.html">Release Notes</a>
</div>
              	 <div class="menu_item">    <a href="./release/example-apps.html">Example Apps</a>
</div>
              	 <div class="menu_item">    <a href="./release/config-examples.html">Config Examples</a>
</div>
              	 <div class="menu_item">    <a href="./release/building.html">Building</a>
</div>
              	 <div class="menu_item">    <a href="./release/faq.html">FAQ</a>
</div>
              	 <div class="menu_item">    <a href="./release/howto/index.html">How Tos</a>
</div>
              	 <div class="menu_item">    <a href="./release/sdk/index.html">SDK Reference</a>
</div>
                  <div class="menu_header">log4net 1.2 Manual</div>
              	 <div class="menu_item">    <a href="./release/manual/introduction.html">Introduction</a>
</div>
              	 <div class="menu_item">    <a href="./release/manual/configuration.html">Configuration</a>
</div>
              	 <div class="menu_item">    <a href="./release/manual/contexts.html">Contexts</a>
</div>
              	 <div class="menu_item">    <a href="./release/manual/plugins.html">Plugins</a>
</div>
              	 <div class="menu_item">    <a href="./release/manual/repositories.html">Repositories</a>
</div>
              	 <div class="menu_item">    <a href="./release/manual/internals.html">Internals</a>
</div>
             </div> 
   

        </body>
    </html>
<!-- end the processing -->





















