3

私は以前にこれを機能させていましたが、現在は機能しておらず、過去2時間、それを理解しようとして髪を引き裂いてきました。

いくつかのアペンダーがあり、そのうちのいくつかは「メイン」ログ用で、もう1つは別の「タスク」ログ用です。メインログには、コンソール、メモリ、ファイル、DB(sqlite3)の4つのアペンダーがあります。タスクログには、メモリ、ファイル、DB(sqlite)の3つのアペンダーがあります。

私を悩ませているのは、タスクログのDBアペンダーを除くすべてのアペンダーがうまく機能していることです。ThreadContextプロパティを使用してタスク固有のデータをログに記録することを除いて、タスクDBアペンダーについて特に特別なことは何もありません。そして、私が言ったように、そのデータはすべてテキストファイルとメモリバッファに問題なく表示されます。

DBアペンダーに関連する出力ウィンドウでエラーを探しましたが、エラーはありません。構成XMLファイル内の両方のDBアペンダーを比較しましたが、それらは同一です...カスタムプロパティをミックスから削除しても、タスクDBアペンダーはまだ機能しません!

私のタスクロガーは次のように構成されています。

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

私の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>

私のメインログDBアペンダーは同じように構成されていますが、機能ます。誰かがさらなるデバッグ戦略を推奨できますか?

4

1 に答える 1

3

log4net 内部デバッグを有効にして、デバッグ メッセージをトレース リスナーまたはシステム デバッガーにキャプチャできます。次の投稿でも同様のアドバイスをしました。

于 2010-09-01T05:38:18.010 に答える