我想用Log4Net將異常記錄到數據庫中。我正在使用adonetappender,它確實有效,但並非最佳。log4net adonetAppender不會將空值插入到數據庫中
如果我設置這樣的例外參數...
<parameter>
<parameterName value="@exception"/>
<dbType value="String"/>
<size value="-1"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%exception"/>
</layout>
</parameter>
它的工作原理,但插入「」當存在而不是空也不例外。
我得到同樣的結果,如果我有這樣的...
<parameter>
<parameterName value="@exception"/>
<dbType value="String"/>
<size value="-1"/>
<layout type="log4net.Layout.ExceptionLayout">
<!-- <key value="exception" /> -->
<!--<conversionPattern value="%exception"/>-->
</layout>
</parameter>
但是,如果我有像這樣
<parameter>
<parameterName value="@exception"/>
<dbType value="String"/>
<size value="-1"/>
<layout type="log4net.Layout.RawPropertyLayout">
<key value="exception" />
</layout>
</parameter>
它只是插入空值...
問題可能在於我們有一個始終調用的靜態日誌記錄封裝器
LogManager.GetLogger("[GoodLife.Common.Logging]").Debug(message, e); // e being null if there is no exception.
當我調用記錄器上的調試方法時,如果e
爲空,我有沒有辦法讓它插入空值?
的佈局log4net的文檔是不是所有的有益的,我從Default values for AdoNetAppender parameter
謝謝@Stefan,但我不確定我是否看到如何使用鍵「異常」創建屬性。我相信你是對的,但我不明白答案。 –
它不創建屬性,它是一種簡單地通過異常的不同佈局。這樣@exception參數直接得到異常。我不得不承認我沒有對它進行測試,因此可能需要先將異常(如果不爲空)轉換爲字符串,但這應該很容易理解。 –
感謝您的幫助。 :) –