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

Хранимая процедура записывает в таблицу "MYTable", длина столбца "Exception" которой равна VARCHAR 8000.

Я могу создать запись в "MYTable", но эта запись не содержит всю трассировку стека исключений после создания записи. Похоже, что трассировка стека урезана и содержит до 1700 символов.

Каков наилучший способ записи полной трассировки стека в базу данных в log4net?

Что мне не хватает?

Пожалуйста помоги.

Спасибо

1 ответ

Решение

Я обычно использую это (у меня есть поле nvarchar(max)):

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

Однако я предполагаю, что он также должен работать с вашей конфигурацией, если вы удалите параметр размера или установите его в -1.

Другие вопросы по тегам