<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>LogManager.GetLogger Method (Assembly, Type)</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">LogManager.GetLogger�Method�(Assembly, Type)</h1>
      </div>
    </div>
    <div id="nstext">
      <p> Shorthand for <b>GetLogger</b>. </p>
      <div class="syntax">
        <span class="lang">[Visual�Basic]</span>
        <br />Overloads�Public�Shared�Function�GetLogger( _<br />���ByVal <i>repositoryAssembly</i>�As�<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemReflectionAssemblyClassTopic.htm">Assembly</a>,�_<br />���ByVal <i>type</i>�As�<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemTypeClassTopic.htm">Type</a>�_<br />)�As�<a href="log4net.ILog.html">ILog</a></div>
      <div class="syntax">
        <span class="lang">[C#]</span>
        <br />public�static�<a href="log4net.ILog.html">ILog</a>�GetLogger(<br />���<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemReflectionAssemblyClassTopic.htm">Assembly</a>�<i>repositoryAssembly</i>,<br />���<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemTypeClassTopic.htm">Type</a>�<i>type</i><br />);</div>
      <h4 class="dtH4">Parameters</h4>
      <dl>
        <dt>
          <i>repositoryAssembly</i>
        </dt>
        <dd>The assembly to use to lookup the repository.</dd>
        <dt>
          <i>type</i>
        </dt>
        <dd>The full name of <i>type</i> will be used as the name of the logger to retrieve.</dd>
      </dl>
      <h4 class="dtH4">Return Value</h4>
      <p>The logger with the name specified.</p>
      <h4 class="dtH4">Remarks</h4>
      <p> Gets the logger for the fully qualified name of the type specified. </p>
      <h4 class="dtH4">See Also</h4>
      <p>
        <a href="log4net.LogManager.html">LogManager Class</a> | <a href="log4net.html">log4net Namespace</a> | <a href="log4net.LogManager.GetLogger_overloads.html">LogManager.GetLogger Overload List</a></p>
      <object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e" viewastext="true" style="display: none;">
        <param name="Keyword" value="GetLogger method">
        </param>
        <param name="Keyword" value="GetLogger method, LogManager class">
        </param>
        <param name="Keyword" value="LogManager.GetLogger method">
        </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>
