有沒有辦法阻止log4net記錄n次相同的異常? 我想實現的是,如果最後一個異常與實際異常相同,那麼我不想記錄。如何防止log4net中的重複異常?
0
A
回答
1
如果您準備編寫自定義類以將其插入,那麼將有損參數設置爲true的緩衝appender會執行此操作。下面是在BufferingAppenderSkeleton
if (this.m_cb == null || this.m_bufferSize <= 1)
{
if (!this.m_lossy || (this.m_evaluator != null && this.m_evaluator.IsTriggeringEvent(loggingEvent)) || (this.m_lossyEvaluator != null && this.m_lossyEvaluator.IsTriggeringEvent(loggingEvent)))
{
if (this.m_eventMustBeFixed)
{
loggingEvent.Fix = this.Fix;
}
this.SendBuffer(new LoggingEvent[]
{
loggingEvent
});
}
}
對事件的追加代碼正如你所看到的,如果你設置了1緩衝區大小,有損於真正和評估,然後你可以決定讓事件通如果this.m_lossyEvaluator.IsTriggeringEvent(loggingEvent)
返回true。
所以你可以創建一個自定義的ITriggeringEventEvaluator
並讓它存儲通過的最近的異常,然後爲每個連續的異常比較兩個值。如果它們的返回值相同,則返回false,如果不返回true並更改最新的異常值。 然後創建BufferingForwardingAppender
並使用您的評估程序對其進行配置。
+0
這個答案純粹是技術性的,但應該注意你的問題。 – samy
相關問題
- 1. 如何防止此異常?
- 2. 如何防止重複異常記錄從芹菜任務
- 3. 如何防止C#中的System.StackOverflowException異常#
- 4. 如何防止重複項
- 5. 如何防止arraycollection中的重複值?
- 6. 如何防止array_push中的重複鍵
- 7. 如何防止XSL中的重複項?
- 8. 如何防止拒絕訪問異常
- 9. c#如何防止異常冒泡
- 10. Java如何防止空對象異常
- 11. 如何防止異常自動增量?
- 12. 如何防止在調試器異常
- 13. 如何防止.Wait()破壞異常?
- 14. 防止log4net通過SMTP發送重複問題
- 15. 如何防止重複的HTML ID?
- 16. 如何防止重複的AJAX呼叫?
- 17. 如何防止重複的SQS消息?
- 18. SQLite:防止重複
- 19. 防止重複碼
- 20. 防止重複(VB.NET)
- 21. 防止重複卡
- 22. 防止GTKMM捕捉異常
- 23. 如何防止重複在angularjs
- 24. 如何防止重複項目listView C#
- 25. 如何防止重複投票
- 26. 如何防止重複業務邏輯?
- 27. 如何防止請求重複?
- 28. 如何防止重複片段?
- 29. 如何防止ItemCount出現重複?
- 30. 如何防止重複。 Java,SQL
您的日誌記錄代碼目前在看什麼?一個[MVC](http://stackoverflow.com/help/mcve)總是很棒。 – Tobbe
代碼在哪裏? log4net不*記錄相同的異常n次 - 它是*異常處理代碼*這樣做。如果你不想登錄每種方法,就不要。記錄調用層次結構中的最高點,例如在MVC控制器的操作中,或在WPF應用程序中的命令處理程序。或者更改不同日誌調用的嚴重級別並應用篩選器,最上面的嚴重程度最高,下面的最低嚴重程度(詳細,調試) –
看看[這個問題](http://stackoverflow.com/questions/ 1208541/log4net-any-filter-for-logging-only-the-n-message/4308493#4308493) – stuartd