Отладка приложения ADO log4net (которое не будет добавлено) - PullRequest
2 голосов
/ 01 сентября 2010

Раньше у меня это работало, но сейчас это не работает, и я последние два часа рву себе волосы, пытаясь понять это.

У меня есть несколько приложений, некоторые из которыхдля «основного» журнала, а другой - для другого «журнала задач».Основной журнал имеет 4 приложения: консоль, память, файл и БД (sqlite3).Журнал задач имеет 3 приложения: память, файл и БД (также sqlite).

Меня сводит с ума то, что все приложения , за исключением , отлично работают с приложением БД журнала задач.Нет ничего особенно особенного в дополнении к базе данных задач, кроме того, что я использую свойства ThreadContext для помещения данных, специфичных для задачи, в журнал.И, как я уже сказал, все эти данные отображаются в текстовом файле и буфере памяти просто отлично.

Я искал ошибки в окне вывода, связанные с приложением БД, и их нет.Я сравнил оба дополнения БД в своем XML-файле конфигурации, и они идентичны ... Я даже удалил свои пользовательские свойства из смеси, и приложение БД задачи все еще не работает!

Мой регистратор задач настроен следующим образом:

<logger name="TaskLogger">
  <level value="DEBUG" />
  <appender-ref ref="TaskLogFile" />
  <appender-ref ref="TaskLogDB" />
  <appender-ref ref="TaskLogMemory" />
</logger>

Мой appender DB настроен следующим образом:

  <appender name="TaskLogDB" type="log4net.Appender.AdoNetAppender">
    <bufferSize value="100" />
    <connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    <connectionString value="Data Source=task_log.s3db;Version=3;" />
    <commandText value="INSERT INTO TaskLog (Date, Level, Thread, Logger, Message, Exception) VALUES (@Date, @Level, @Thread, @Logger, @Message, @Exception)" />
    <parameter>
      <parameterName value="@Date" />
      <dbType value="DateTime" />
      <layout type="log4net.Layout.RawTimeStampLayout" />
    </parameter>
    <parameter>
      <parameterName value="@Level" />
      <dbType value="String" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Logger" />
      <dbType value="String" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%logger" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Thread" />
      <dbType value="String" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%thread" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Message" />
      <dbType value="String" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Exception" />
      <dbType value="String" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%exception" />
      </layout>
    </parameter>
  </appender>

Мой appender DB основного журнала настроен таким же образом, но это работает.Кто-нибудь может порекомендовать дальнейшие стратегии отладки?

1 Ответ

2 голосов
/ 01 сентября 2010

Вы можете включить внутреннюю отладку log4net и перехватывать сообщения отладки для прослушивателя трассировки или системного отладчика.Я дал аналогичный совет в следующем посте .

...