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.