Я начал работу с log4net сегодня. Это началось очень хорошо, и я получил свои первые текстовые лог-файлы для своего приложения. Затем я сделал следующий шаг и попытался войти в Accessdatabase log_db.accdb в таблице t_log_dat. Сначала это оказалось goot, и мне удалось записать данные строки типа и int32. И проблемы начались, когда я попытался включить timestamp как Datetime. здесь моя земля-настройки для Appender и то, что я пытался до сих пор для параметра @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)" />
Первый Try: Как описано в документации для 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>
Второй Try: Манипулировать строку, поэтому следует спецификация для вставки в доступе мс. Что-то вроде этого '2015-08-09 9: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>
My Last Try, чтобы использовать основной log4net RawTimestampLayout
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
Однако ни одно из вышеперечисленного не работал для меня. Я всегда получаю следующую ошибку, когда я построить мое приложение
log4net: ERROR [AdoNetAppender] ErrorCode: GenericFailure. Исключение при записи в базу данных System.Data.OleDb.OleDbException (0x80040E07): Datentypenkonflikt в Kriterienausdruck. бей System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult ч)
EDIT - Ошибка Переводит в
Тип данных рассогласование
Кто-нибудь знает как я могу ввести временную метку в базе данных доступа с помощью log4net?
P.S .: Этот вопрос отличается от Configuring log4net to write on a database, так как я специально пытаюсь выяснить, как записать значение datetime в базу данных доступа, используя log4net. В упомянутой выше теме просто запрашивается общая помощь для записи в базу данных с использованием log4net. Также предоставленный ответ показывает, как активировать трассировку для log4net, которую я уже включил в этот вопрос.
Возможный дубликат [Настройка log4net для записи в базе данных] (http: // stackoverflow.com/questions/28024282/configuring-log4net-to-write-on-a-database) – MethodMan
Вам понадобится значение, соответствующее типу данных столбца '[dt_timestanp]' – stuartd
Да, dt_timestanp - значение DateTime , в моей третьей попытке я надеялся получить его. Но все та же ошибка. –