<html dir="LTR">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
    <title>LoggerManager Methods</title>
    <xml>
    </xml>
    <link rel="stylesheet" type="text/css" href="MSDN.css" />
  </head>
  <body id="bodyID" class="dtBODY">
    <div id="nsbanner">
      <div id="bannerrow1">
        <table class="bannerparthead" cellspacing="0">
          <tr id="hdr">
            <td class="runninghead">Apache log4net� SDK Documentation - Microsoft .NET Framework 4.0</td>
            <td class="product">
            </td>
          </tr>
        </table>
      </div>
      <div id="TitleRow">
        <h1 class="dtH1">LoggerManager�Methods</h1>
      </div>
    </div>
    <div id="nstext">
      <p>The methods of the <b>LoggerManager</b> class are listed below. For a complete list of <b>LoggerManager</b> class members, see the <a href="log4net.Core.LoggerManagerMembers.html">LoggerManager Members</a> topic.</p>
      <h4 class="dtH4">Public Static (Shared) Methods</h4>
      <div class="tablediv">
        <table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.CreateDomain_overloads.html">CreateDomain</a></td><td width="50%">Overloaded.  Creates a repository with the specified name. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.CreateRepository_overloads.html">CreateRepository</a></td><td width="50%">Overloaded.  Creates a repository with the specified name. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.Exists_overloads.html">Exists</a></td><td width="50%">Overloaded.  Returns the named logger if it exists. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.GetAllRepositories.html">GetAllRepositories</a></td><td width="50%"> Gets an array of all currently defined repositories. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.GetCurrentLoggers_overloads.html">GetCurrentLoggers</a></td><td width="50%">Overloaded.  Returns all the currently defined loggers in the specified repository. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.GetLogger_overloads.html">GetLogger</a></td><td width="50%">Overloaded.  Retrieves or creates a named logger. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.GetLoggerRepository_overloads.html">GetLoggerRepository</a></td><td width="50%">Overloaded.  Return the default <a href="log4net.Repository.ILoggerRepository.html">ILoggerRepository</a> instance. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.GetRepository_overloads.html">GetRepository</a></td><td width="50%">Overloaded.  Return the default <a href="log4net.Repository.ILoggerRepository.html">ILoggerRepository</a> instance. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.ResetConfiguration_overloads.html">ResetConfiguration</a></td><td width="50%">Overloaded.  Resets all values contained in this repository instance to their defaults. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.Shutdown.html">Shutdown</a></td><td width="50%"> Shuts down the log4net system. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.ShutdownRepository_overloads.html">ShutdownRepository</a></td><td width="50%">Overloaded.  Shuts down the repository for the repository specified. </td></tr></table>
      </div>
      <h4 class="dtH4">Public Instance Methods</h4>
      <div class="tablediv">
        <table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassEqualsTopic.htm">Equals</a> (inherited from <b>Object</b>)</td><td width="50%">�</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetHashCodeTopic.htm">GetHashCode</a> (inherited from <b>Object</b>)</td><td width="50%">�</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetTypeTopic.htm">GetType</a> (inherited from <b>Object</b>)</td><td width="50%">�</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassToStringTopic.htm">ToString</a> (inherited from <b>Object</b>)</td><td width="50%">�</td></tr></table>
      </div>
      <h4 class="dtH4">See Also</h4>
      <p>
        <a href="log4net.Core.LoggerManager.html">LoggerManager Class</a> | <a href="log4net.Core.html">log4net.Core Namespace</a></p>
      <object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e" viewastext="true" style="display: none;">
        <param name="Keyword" value="LoggerManager class, methods">
        </param>
      </object>
      <hr />
      <div id="footer"><a href='http://logging.apache.org/log4net/'>Copyright 2004-2013 The Apache Software Foundation.</a><br></br>Apache log4net, Apache and log4net are trademarks of The Apache Software Foundation.</div>
    </div>
  </body>
</html>
