給定兩個附加目的地:A1,A2和多記錄儀,其中一個是L1如何設置每個附加器記錄特定水平log4net的
是否有可能配置log4net的這樣:
A1獲得DEBUG及以上從除 L1的所有記錄,爲它獲得INFO及以上
A2所有記錄儀
我已經看過添加器的閾值,過濾得到DEBUG及以上,和所有其他的配置組合,我能想到的,但沒有的他們似乎完成以上任務。
給定兩個附加目的地:A1,A2和多記錄儀,其中一個是L1如何設置每個附加器記錄特定水平log4net的
是否有可能配置log4net的這樣:
A1獲得DEBUG及以上從除 L1的所有記錄,爲它獲得INFO及以上
A2所有記錄儀
我已經看過添加器的閾值,過濾得到DEBUG及以上,和所有其他的配置組合,我能想到的,但沒有的他們似乎完成以上任務。
你可以做到以下幾點:
我沒有測試它,但我不明白爲什麼這不起作用。
根據該文檔:
過濾器形成一個鏈,所述事件具有穿過。沿途的任何過濾器都可以接受事件並停止處理,否認事件並停止處理,或允許事件進入下一個過濾器。如果事件到達過濾器鏈的末尾而沒有被拒絕,它將被隱式接受並記錄下來。
如此看來,像這樣的工作(未經測試的僞代碼):
A1
Level >= INFO: Accept
Logger == L1: Deny
Level >= DEBUG: Accept
DenyAll
A2
Level >= DEBUG: Accept
我試過這個,但是在A1結尾處的DenyAll過濾器阻止了任何東西被記錄。我刪除了DenyAll行,A1對所有其他記錄器進行了DEBUG操作,但從L1中完全沒有。我認爲記錄器L1的否認屬於「否認事件並停止處理」文檔聲明。話雖如此,即使它沒有解決這個問題,我很欣賞你的建議。 – markee 2010-07-27 02:40:42
感謝Stefan,這個解決方案確實達到了預期的效果。我只需要一個額外的BufferingForwardingAppender,因爲記錄器L1可以直接引用A2。 – markee 2010-07-27 02:43:16
是的,當然...我很傻,我沒有看到 – 2010-07-27 08:26:28