2009-04-15 56 views
4

我想篩選出包含指定字符串的郵件。我使用log4net.Filter.StringMatchFilter,但僅適用於appender。你能對記錄器級別過濾器的log4net

我想已經過濾的日誌記錄器級別的消息。沿着這些路線的東西:

<logger name="MyLogger.WebServices"> 
    <level value="Debug" /> 
    <filter type="log4net.Filter.StringMatchFilter"> 
     <stringToMatch value="do not log me" /> 
     <acceptOnMatch value="false" /> 
    </filter> 
    <appender-ref ref="file" /> 
    <appender-ref ref="debug" /> 
</logger> 

這是真的有可能嗎?還是有不同的方式來處理這種情況。

回答

11

過濾器是針對只追加程序使用。如果您需要過濾多個appender的事件,則可以使用forwardingappender進行預過濾。這樣可以避免在幾個appender上覆制和粘貼相同的過濾器。

你的榜樣應該是這樣的:

<appender name="screeningAppender" type="log4net.Appenders.ForwardingAppender"> 
    <filter type="log4net.Filter.StringMatchFilter"> 
      <stringToMatch value="do not log me" /> 
      <acceptOnMatch value="false" /> 
    </filter> 

    <appender-ref ref="file" /> 
    <appender-ref ref="debug" /> 
</appender> 

<logger name="MyLogger.WebServices"> 
    <level value="Debug" /> 
    <appender-ref ref="screeningAppender" /> 
</logger> 
+0

這正是我擔心的。乾杯! – Rashack 2009-04-16 13:07:38