<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>FilterDecision Enumeration</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">FilterDecision Enumeration</h1>
      </div>
    </div>
    <div id="nstext">
      <p> The return result from <a href="log4net.Filter.IFilter.Decide.html">Decide</a>
            </p>
      <div class="syntax">
        <span class="lang">[Visual�Basic]</span>
        <br />Public�Enum�FilterDecision</div>
      <div class="syntax">
        <span class="lang">[C#]</span>
        <div>public�enum�FilterDecision</div>
      </div>
      <h4 class="dtH4">Remarks</h4>
            <p> The return result from <a href="log4net.Filter.IFilter.Decide.html">Decide</a>
            </p>
            <h4 class="dtH4">Members</h4><div class="tablediv"><table class="dtTABLE" cellspacing="0"><tr valign="top"><th width="50%">Member Name</th><th width="50%">Description</th></tr>
<tr valign="top"><td><b>Deny</b></td><td> The log event must be dropped immediately without consulting with the remaining filters, if any, in the chain. </td></tr>
<tr valign="top"><td><b>Neutral</b></td><td> This filter is neutral with respect to the log event. The remaining filters, if any, should be consulted for a final decision. </td></tr>
<tr valign="top"><td><b>Accept</b></td><td> The log event must be logged immediately without consulting with the remaining filters, if any, in the chain. </td></tr></table></div><h4 class="dtH4">Requirements</h4><p><b>Namespace: </b><a href="log4net.Filter.html">log4net.Filter</a></p><p><b>Assembly: </b>log4net (in log4net.dll)
					</p><h4 class="dtH4">See Also</h4><p><a href="log4net.Filter.html">log4net.Filter Namespace</a></p><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e" viewastext="true" style="display: none;"><param name="Keyword" value="FilterDecision enumeration"></param><param name="Keyword" value="log4net.Filter.FilterDecision enumeration"></param><param name="Keyword" value="Deny enumeration member"></param><param name="Keyword" value="FilterDecision.Deny enumeration member"></param><param name="Keyword" value="Neutral enumeration member"></param><param name="Keyword" value="FilterDecision.Neutral enumeration member"></param><param name="Keyword" value="Accept enumeration member"></param><param name="Keyword" value="FilterDecision.Accept enumeration member"></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>
