2012-04-18 20 views
2

對於log4net的配置中添加完整的堆棧跟蹤到數據庫表..這是我的參數設置log4net的通過異常參數

<parameter> 
     <parameterName value="@exception"/> 
     <dbType value="String"/> 
     <size value="8000"/> 
     <layout type="log4net.Layout.ExceptionLayout"/> 
    </parameter> 
    </appender> 

在ADONetAppender我的存儲過程的設置如下:

<commandText value="dbo.MyInsertProcName"/> 
<commandType value="StoredProcedure"/> 

裏面的proc,@exception的輸入參數如下:

ALTER PROCEDURE [dbo].[MyInsertProcName]   
( 
    @log_date    DATETIME   
    , @log_level   VARCHAR(50)   
    , @logger    VARCHAR(255)   
    , @message    VARCHAR(4000)   
    , @exception   VARCHAR(MAX) 
.... 

存儲proc寫入「異常」列爲「VARCHAR 8000」的列「MYTable」。

我能夠創建條目到「MYTable」中,但該條目在創建條目後不包含整個異常堆棧跟蹤。它看起來像堆棧跟蹤被截斷,只能包含多達1700個字符。

在log4net中將完整堆棧跟蹤記錄到數據庫的最佳方式是什麼?

我錯過了什麼?

請幫助。

感謝

回答

5

我通常使用這個(我有一個爲nvarchar(最大)字段):但是

<parameter> 
    <parameterName value="@exception"/> 
    <dbType value="String"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%exception" /> 
    </layout> 
</parameter> 

我認爲它也應該與你的配置工作,如果你刪除的大小參數或設置它爲-1。

+6

正如注意:省略大小元素對我不起作用,但是,將其設置爲-1確實有效。去搞清楚。 – 2013-07-02 14:12:57

+0

這兩個選項都不適合我。我的消息欄正被截斷。有任何想法嗎? – Jacques 2013-10-03 05:15:18