3

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) 
....

ストアド プロシージャは、"Exception" 列の長さが VARCHAR 8000 のテーブル "MYTable" に書き込みます。

「MYTable」にエントリを作成できますが、このエントリには、エントリが作成された後の例外スタック トレース全体が含まれていません。スタック トレースが切り捨てられ、最大 1700 文字しか含まれていないようです。

log4netで完全なスタックトレースをデータベースに記録する最良の方法は何ですか?

私は何が欠けていますか?

助けてください。

ありがとう

4

1 に答える 1

7

私は通常これを使用します(私はnvarchar(max)フィールドを持っています):

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

ただし、sizeパラメーターを削除するか、-1に設定すると、構成でも機能するはずです。

于 2012-04-19T07:41:59.833 に答える