<!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 support, log4net"  />
 
                         
            <link href="./css/site.css" rel="stylesheet" type="text/css"/>
            
							<link href="./css/style.css" rel="stylesheet" type="text/css"/>
			
            <title>log4net - log4net Support</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 Support</h1>
    <div class="i1">
                                    <p>
				log4net user support is provided via a mailing list. Discussion on log4net is held on the
				<em>log4net-user</em> mailing list. Please search the archives before posting because it
				is likely that your question has been answered before.
			</p>
                                                    <h2><a id="mlist-archive"></a>Mailing List Archives</h2>
    <div class="i1">
                                    <p>
					You can browse the mailing list archives at the following locations:
				</p>
                                                <ul>
					<li><a href="http://mail-archives.eu.apache.org/mod_mbox/logging-log4net-user/">mod_mbox</a></li>
					<li><a href="http://nagoya.apache.org/eyebrowse/SummarizeList?listId=215">eyebrowse</a></li>
					<li><a href="http://marc.theaimsgroup.com/?l=log4net-user&amp;r=1&amp;w=2">MARC</a></li>
					<li><a href="http://sourceforge.net/mailarchive/forum.php?forum=log4net-users">Old Mailing List at sourceforge</a></li>
				</ul>
                      </div>
                                                    <h2><a id="mlist-subscribe"></a>Subscribe</h2>
    <div class="i1">
                                    <p>
					Subscribe to either the list or to the digest list:
				</p>
                                                <ul>
					<li>
						<p>
							To subscribe to this list send an e-mail to <br />
							<a href="mailto:log4net-user-subscribe@logging.apache.org">log4net-user-subscribe@logging.apache.org</a>.
						</p>
					</li>
						
					<li>
						<p>
							To subscribe to the digest list sent an e-mail to <br />
							<a href="mailto:log4net-user-digest-subscribe@logging.apache.org">log4net-user-digest-subscribe@logging.apache.org</a>.
						</p>
					</li>
				</ul>
                      </div>
                                                    <h2><a id="mlist-unsubscribe"></a>Unsubscribe</h2>
    <div class="i1">
                                    <p>
					To unsubscribe send an email to the relevant email address:
				</p>
                                                <ul>
					<li>
						<p>
							To unsubscribe from this list send an e-mail to <br />
							<a href="mailto:log4net-user-unsubscribe@logging.apache.org">log4net-user-unsubscribe@logging.apache.org</a>.
						</p>
					</li>
						
					<li>
						<p>
							To unsubscribe from the digest list sent an e-mail to <br />
							<a href="mailto:log4net-user-digest-unsubscribe@logging.apache.org">log4net-user-digest-unsubscribe@logging.apache.org</a>.
						</p>
					</li>
				</ul>
                      </div>
                                                    <h2><a id="mlist-posting"></a>Posting</h2>
    <div class="i1">
                                    <p>
					Before posting please read the following guidelines:
				</p>
                                                <ul>
					<li>
						<p>
							<strong>Ask smart questions</strong><br />
							Every volunteer project obtains its strength from the people involved
							in it. You are welcome to join any of our mailing lists.  You can
							choose to lurk, or actively participate; it's up to you.  The level of
							community responsiveness to specific questions is generally directly
							proportional to the amount of effort you spend formulating your
							question. Eric Raymond and Rick Moen have even written an essay entitled 
							<a href="http://www.catb.org/%7Eesr/faqs/smart-questions.html">"<b>Asking Smart Questions</b>"</a>
							precisely on this topic.
						</p>
					</li>
					
					<li>
						<p>
							<strong>Keep your email short and to the point</strong><br />
							If your email is more than about a page of text, chances are that it
							won't get read by very many people. It is much better to try to pack a
							lot of informative information (see above about asking smart questions)
							into as small of an email as possible. If you are replying to a previous
							email, it is a good idea to only quote the parts that you are replying
							to and to remove the unnecessary bits. This makes it easier for people
							to follow a thread as well as making the email archives easier to search
							and read.
						</p>
					</li>
					
					<li>
						<p>
							<strong>Do your best to ensure that you are not sending HTML or "Stylelized" email to the list</strong><br />
							If you are using Outlook or Outlook Express or Eudora, chances are that
							you are sending HTML email by default. There is usually a setting that
							will allow you to send "Plain Text" email. If you are using Microsoft
							products to send email, there are several bugs in the software that
							prevent you from turning off the sending of HTML email. Please read this
							<a href="http://jakarta.apache.org/site/micromail.html">page</a> as well.
						</p>
					</li>
					
					<li>
						<p>
							<strong>Watch where you are sending email</strong><br />
							Our mailing lists have set the Reply-To to go back to the 
							list. That means that when you Reply to a message, it will go to the list
							and not to the original author directly. The reason is because it helps
							facilitate discussion on the list for everyone to benefit from. Be careful 
							of this as sometimes you may intend to reply to a message directly to someone 
							instead of the entire list.
						</p>
						<p>
							<small><em>The appropriate contents of the Reply-To header is an age-old debate that
							should not be brought up on the mailing lists. You can examine opposing points of view
							<a href="http://www.unicom.com/pw/reply-to-harmful.html">condemning</a>
							our convention and <a href="http://www.metasystema.org/essays/reply-to-useful.mhtml">condoning</a> 
							it. Bringing this topic up for debate again on a mailing list will add nothing new 
							and is considered off-topic.</em></small>
						</p>
					</li>
					
					<li>
						<p>
							<strong>Do not cross post messages</strong><br />
							In other words, pick a mailing list and send your messages to that mailing 
							list only. Do not send your messages to multiple mailing lists. The reason is 
							that people may be subscribed to one list and not to the other. Therefore, 
							some people will only see part of the conversation.
						</p>
					</li>
				</ul>
                                                <p>
					Where relevant please try to include the following information in your postings.
				</p>
                                                <ul>
					<li>
						<p>
							Specify the version of log4net you are using.
						</p>
					</li>
					
					<li>
						<p>
							Specify what your assembly type is, i.e. exe or dll, and how your code is launched,
							e.g. console application, windows application, ASP.NET project, COM+ hosted object, etc...
						</p>
					</li>
					
					<li>
						<p>
							Specify which runtime platform (e.g. MS .NET, Mono, SSCLI) you are using and which version.
						</p>
					</li>
					
					<li>
						<p>
							If you are having configuration issues then include logging configuration files if any, plus source code.
						</p>
					</li>
					
					<li>
						<p>
							If possible please reproduce your issue with the 
							<a href="release/faq.html#internalDebug">internal log4net debugging</a> 
							enabled. Include this debug output in your post, it is usually the first thing we ask for in diagnosing issues.
						</p>
					</li>
					
					<li>
						<p>
							If you think you have found a bug then a short example reproducing the problem is very much appreciated.
						</p>
					</li>
				</ul>
                                                <p>
					<strong>To prevent spam, we require you to be subscribed to the list before posting to it.</strong>
				</p>
                                                <p>
					Ask questions and report bugs via email to the 
					<a href="mailto:log4net-user@logging.apache.org">log4net-user@logging.apache.org</a> 
					mailing list.
				</p>
                      </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 -->





















