<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>DenyAllFilter.Decide 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">DenyAllFilter.Decide�Method�</h1>
      </div>
    </div>
    <div id="nstext">
      <p> Always returns the integer constant <a href="log4net.Filter.FilterDecision.html">Deny</a>
            </p>
      <div class="syntax">
        <span class="lang">[Visual�Basic]</span>
        <br />Overrides�Public�Function�Decide( _<br />���ByVal <i>loggingEvent</i>�As�<a href="log4net.Core.LoggingEvent.html">LoggingEvent</a>�_<br />)�As�<a href="log4net.Filter.FilterDecision.html">FilterDecision</a>�_<div>����Implements�<a href="log4net.Filter.IFilter.Decide.html">IFilter.Decide</a></div></div>
      <div class="syntax">
        <span class="lang">[C#]</span>
        <br />public�override�<a href="log4net.Filter.FilterDecision.html">FilterDecision</a>�Decide(<br />���<a href="log4net.Core.LoggingEvent.html">LoggingEvent</a>�<i>loggingEvent</i><br />);</div>
      <h4 class="dtH4">Parameters</h4>
      <dl>
        <dt>
          <i>loggingEvent</i>
        </dt>
        <dd>the LoggingEvent to filter</dd>
      </dl>
      <h4 class="dtH4">Return Value</h4>
      <p>Always returns <a href="log4net.Filter.FilterDecision.html">Deny</a></p>
      <h4 class="dtH4">Implements</h4>
      <p>
        <a href="log4net.Filter.IFilter.Decide.html">IFilter.Decide</a>
      </p>
      <h4 class="dtH4">Remarks</h4>
            <p> Ignores the event being logged and just returns <a href="log4net.Filter.FilterDecision.html">Deny</a>. This can be used to change the default filter chain behavior from <a href="log4net.Filter.FilterDecision.html">Accept</a> to <b>Deny</b>. This filter should only be used as the last filter in the chain as any further filters will be ignored! </p>
            <h4 class="dtH4">See Also</h4><p><a href="log4net.Filter.DenyAllFilter.html">DenyAllFilter Class</a> | <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="Decide method"></param><param name="Keyword" value="Decide method, DenyAllFilter class"></param><param name="Keyword" value="DenyAllFilter.Decide 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>
