Я начал работать с log4net сегодня. Все началось очень хорошо, и я получил свои первые текстовые файлы журналов для своего приложения. Затем я сделал следующий шаг и попытался войти в Accessdatabase log_db.accdb в таблице t_log_dat. Сначала это обернулось неудачей, и я смог записать данные типа string и int32. И проблемы начались, когда я попытался включить метку времени как Datetime. вот мои основные настройки для приложения и то, что я пробовал до сих пор для параметра @log_date
<appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
<connectionString value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=log_db.accdb" />
<commandText value="INSERT INTO t_log_dat ([dt_timestanp],[str_message],[int_thread]) VALUES (@log_date,@message, @thread)" />
Первая попытка: как описано в документации для MS-Access. https://logging.apache.org/log4net/release/config-examples.html
<parameter>
<parameterName value="@log_date" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date" />
</layout>
</parameter>
Вторая попытка: манипулировать строкой, чтобы она соответствовала спецификации для доступа к вставке в ms. Примерно так '2015-08-09 09:23:00'
<parameter>
<parameterName value="@log_date"/>
<dbType value="String"/>
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="'%date{yyyy'-'MM'-'dd HH':'mm':'ss}'" />
</layout>
</parameter>
Моя последняя попытка состояла в том, чтобы использовать базовый log4net RawTimestampLayout
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
Однако у меня ничего из вышеперечисленного не сработало. При создании приложения я всегда получаю следующую ошибку
log4net: ОШИБКА [AdoNetAppender] Код ошибки: GenericFailure. Исключение при записи в базу данных System.Data.OleDb.OleDbException (0x80040E07): Datentypenkonflikt в Kriterienausdruck. bei System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult hr)
ИЗМЕНИТЬ - ошибка преобразуется в
Несоответствие типа данных
Кто-нибудь знает, как я могу ввести метку времени в базе данных доступа с помощью log4net?
PS: этот вопрос отличается от настройки log4net для записи в базу данных , поскольку я специально пытаюсь выяснить, как записать значение даты и времени в базу данных доступа с помощью log4net. Упомянутый выше поток просто запрашивает общую помощь при записи в базу данных с помощью log4net. Также предоставленный ответ просто показывает, как активировать трассировку для log4net, которую я уже включил в этот вопрос.
[dt_timestanp]
. - person stuartd   schedule 06.09.2016