我需要捕獲log4net異常(它自己的異常,而不是由它記錄的應用程序異常)。我希望有做這種方式的一種方式:捕獲log4net異常
Try
_logger.Info(response)
Catch ex As Exception
Excepciones.HandleException(ex, "PolicyCore")
End Try
我有這樣的代碼實現,並有在編譯沒有錯誤,但我強迫log4net的有一個錯誤(指向在配置文件中不存在的數據庫)和沒有什麼是扔。
我已經試過了聽衆的形式給出:
<appSettings>
<add key="log4net.Internal.Debug" value="true" />
</appSettings>
<system.diagnostics>
<trace autoflush="true" indentsize="4" >
<listeners>
<add name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\\temp\\log4net.txt" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
,它的寫入錯誤log4net.txt,強制那些我的意思。
最後這個問題有兩個缺點:它不會將每個錯誤追加到文件中,如果錯誤是相同的,它不會寫入它,我無法讓偵聽器將每個錯誤寫入文件,只有一個(我不知道如何完全配置跟蹤監聽器,可能是這樣)。因此它不會將日期和時間附加到每一行,這對我來說是必要的。最後我不能給它結構(xml)。
即使聽衆工作我需要使用try/catch aproach,因爲我使用企業庫中的ExceptionHandling來記錄我的應用程序中的錯誤。
任何人遇到問題和/或有解決方案?
我不知道log4net禁用的appender不起作用。這就是爲什麼我看不到這個appender不止一個錯誤的原因。我正在嘗試這個問題,因爲我們正在實施的應用程序可能會作爲一個合法的關鍵,因此它將需要記錄一切,包括log4net錯誤,以防應用程序失敗。將跟蹤錯誤保存到企業庫異常處理似乎非常複雜。我將按照原樣使用它:日誌記錄框架。 BL會處理所有必要的邏輯。非常感謝你。 – euther
@Stefan「Log4net被設計爲不拋出任何異常」,那麼如果日誌記錄失敗了,我們可以如何找到它失敗的原因? – VJAI
您可以打開「內部調試」。你可以在log4net faq裏找到這方面的信息:http://logging.apache.org/log4net/release/faq.html –