<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 Members</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 Members
					</h1>
      </div>
    </div>
    <div id="nstext">
      <p>
        <a href="log4net.Core.LoggerManager.html">LoggerManager overview</a>
      </p>
      <h4 class="dtH4">Public Static (Shared) Properties</h4>
      <div class="tablediv">
        <table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubproperty.gif"></img><img src="static.gif" /><a href="log4net.Core.LoggerManager.RepositorySelector.html">RepositorySelector</a></td><td width="50%"> Gets or sets the repository selector used by the <a href="log4net.LogManager.html">LogManager</a>. </td></tr></table>
      </div>
      <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">
        </param>
        <param name="Keyword" value="log4net.Core.LoggerManager class">
        </param>
        <param name="Keyword" value="LoggerManager class, all members">
        </param>
      </object>
      <hr />
      <div id="footer"><a href='http://logging.apache.org/log4net/'>Copyright 2004-2011 The Apache Software Foundation.</a><br></br>Apache log4net, Apache and log4net are trademarks of The Apache Software Foundation.</div>
    </div>
  </body>
</html>
