2014-09-22 28 views
1

log4net的根配置設置是文件級別混合到我有一些麻煩,下面的根配置設置附加目的地

<root> 
    <level value="INFO" /> 
    <appender-ref ref="file-appender-info" /> 

    <level value="WARN" /> 
    <appender-ref ref="file-appender-warn" /> 

    <level value="ERROR" /> 
    <appender-ref ref="file-appender-error" /> 

    <level value="DEBUG" /> 
    <appender-ref ref="ConsoleAppenderStandard" /> 
</root> 

它寫日誌的所有層面到所有文件的Appender的。

因此,例如信息-log.txt的有來自Log.Warn和Log.Error

IM日誌確保我與配置的佈局一個簡單的問題,但我似乎無法找出它是什麼。

+0

我認爲這是你在找什麼: [鏈接](http://stackoverflow.com/questions/1372435/configure-log4net-to-write-to-multiple-files) 歡呼馬丁 [1]:http://stackoverflow.com/questions/1372435/configure-log4net-to-write-to-multiple-files – 2014-09-22 17:42:04

+0

我相信這是我想達到的相反。我正在寫入多個文件,我希望每個級別的日誌都轉到特定的文件。 – Zapnologica 2014-09-22 17:55:44

+0

那篇文章還有另一個解釋你想要的東西嗎? [鏈接](http://stackoverflow.com/a/4513361/3877877)。你必須調用LogManager.GetLogger(「SECTION」) – 2014-09-22 17:57:51

回答

2

您正在根目錄中反覆定義日誌級別,然後只保留最新日誌並將其用於所有appender。一個記錄器只能存在一個級別。

如果你想過濾每個級別到一個appender,聲明所有appender在根目錄中並且use a LevelMatchFilter on each appender只有一個級別類型傳遞給每個appender。

您可能感興趣的其他過濾器,這裏是從上面的鏈接採取的列表:

這裏是log4net的分佈可用過濾器的列表:

  • log4net.Filter.LevelMatchFilter過濾日誌符合特定日誌記錄級別的事件;或者,可以配置爲過濾不符合特定日誌記錄級別的事件 。
  • log4net.Filter.LevelRangeFilter與LevelMatchFilter類似,不同之處在於,不是過濾單個日誌級別,而是在 上過濾連續級別的包含範圍。
  • log4net.Filter.LoggerMatchFilter根據發出它們的記錄器對象的名稱來過濾記錄事件。
  • log4net.Filter.StringMatchFilter基於對日誌消息的字符串或正則表達式匹配來過濾日誌事件。
  • log4net.Filter.PropertyFilter根據對特定上下文屬性的值或正則表達式匹配來過濾日誌事件。
  • log4net.Filter.DenyAllFilter有效地刪除appender的所有日誌記錄事件。