簡體   English   中英

如何在Log4Net中為每個追加程序設置記錄器特定級別

[英]How to set logger specific levels per appender in Log4Net

給定兩個附加器:A1,A2和多個記錄器,其中一個是L1

是否可以將log4net配置為:

A1從L1 之外的所有記錄器獲取DEBUG或更高版本,對於L1,其獲取INFO或更高版本
A2從所有記錄器中獲得DEBUG及以上

我查看了追加器閾值,過濾器以及我能想到的所有其他配置組合,但似乎沒有一個可以完成上述任務。

您可以執行以下操作:

  1. 定義您的兩個附加程序(A1,A2),不帶任何過濾器
  2. 創建一個BufferingForwardingAppender,它轉發到A1並在> = INFO級別進行過濾
  3. 創建一個BufferingForwardingAppender,它轉發到A2(無過濾器或> = DEBUG)
  4. 配置根記錄器以使用附加程序A1,A2
  5. 配置L1記錄器不繼承附加程序(additivity = false); 而是引用兩個BufferingForwardingAppender

我沒有測試它,但是我不明白為什么這不起作用。

根據文檔:

篩選器形成事件必須通過的鏈。 沿途的任何過濾器都可以接受事件並停止處理,拒絕事件並停止處理,或者允許事件進入下一個過濾器。 如果事件在沒有被拒絕的情況下到達過濾器鏈的末尾,則將被隱式接受並記錄下來。

因此,看起來像這樣的事情會起作用(未經測試的偽代碼):

A1
    Level >= INFO:  Accept
    Logger == L1: Deny
    Level >= DEBUG: Accept
    DenyAll

A2
    Level >= DEBUG: Accept

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM