调试一个无法附加日志的ADO log4net appender

3

我之前已经把这个东西搞好了,但现在它不工作了,我已经试了两个小时了,一直在努力弄明白问题所在。

我有几个追加器,其中一些是用于“主”日志,另一个是用于另一个“任务”日志。主日志有4个追加器:控制台、内存、文件和DB(sqlite3)。任务日志有3个追加器:内存、文件和DB(也是sqlite)。

让我感到困扰的是,除了任务日志的DB追加器之外,所有的追加器都很好用。任务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配置如下:

  <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 appender配置方式相同,但是它可以正常工作。有人能推荐更多的调试策略吗?

1个回答

3

你可以启用log4net的内部调试功能,并将调试消息捕获到跟踪侦听器或系统调试器中。我在以下帖子中给出了类似的建议。


这是有史以来最好的调试提示。 :) 谢谢,这完全帮助我追踪到了我的问题! - Dave
很高兴你能找到问题的所在。 :) - Garett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接