<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>Hierarchy.GetAppenders Method</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">Hierarchy.GetAppenders�Method�</h1>
      </div>
    </div>
    <div id="nstext">
      <p> Returns all the Appenders that are currently configured </p>
      <div class="syntax">
        <span class="lang">[Visual�Basic]</span>
        <br />Overrides�Public�Function�GetAppenders()�As�<a href="log4net.Appender.IAppender.html">IAppender()</a>�_<div>����Implements�<a href="log4net.Repository.ILoggerRepository.GetAppenders.html">ILoggerRepository.GetAppenders</a></div></div>
      <div class="syntax">
        <span class="lang">[C#]</span>
        <br />public�override�<a href="log4net.Appender.IAppender.html">IAppender[]</a>�GetAppenders();</div>
      <h4 class="dtH4">Return Value</h4>
      <p>An array containing all the currently configured appenders</p>
      <h4 class="dtH4">Implements</h4>
      <p>
        <a href="log4net.Repository.ILoggerRepository.GetAppenders.html">ILoggerRepository.GetAppenders</a>
      </p>
      <h4 class="dtH4">Remarks</h4>
            <p> Returns all the <a href="log4net.Appender.IAppender.html">IAppender</a> instances that are currently configured. All the loggers are searched for appenders. The appenders may also be containers for appenders and these are also searched for additional loggers. </p>
            <p> The list returned is unordered but does not contain duplicates. </p>
            <h4 class="dtH4">See Also</h4><p><a href="log4net.Repository.Hierarchy.Hierarchy.html">Hierarchy Class</a> | <a href="log4net.Repository.Hierarchy.html">log4net.Repository.Hierarchy Namespace</a></p><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e" viewastext="true" style="display: none;"><param name="Keyword" value="GetAppenders method"></param><param name="Keyword" value="GetAppenders method, Hierarchy class"></param><param name="Keyword" value="Hierarchy.GetAppenders method"></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>
