2010-09-01 60 views
2

我已經有過這個工作,但現在它不工作,我一直在我的頭髮在過去兩個小時試圖弄清楚。調試一個ADO log4net appender(不會追加)

我有幾個appender,其中一些用於「主」日誌,另一個用於另一個「任務」日誌。主日誌有4個appender:控制檯,內存,文件和數據庫(sqlite3)。任務日誌有3個appender:內存,文件和數據庫(也是sqlite)。

什麼推動我堅果是所有的appenders 除了任務日誌的數據庫appender工作很好。除了使用ThreadContext屬性將特定於任務的數據放入日誌之外,任務DB appender沒有什麼特別的特殊之處。就像我說的,所有的數據都出現在文本文件和內存緩衝區中。

我在與數據庫appender有關的輸出窗口中查找錯誤,並且沒有任何錯誤。我比較了兩個數據庫appender在我的配置XML文件,他們是相同的...我甚至刪除了我的自定義屬性混合,並且任務數據庫appender 仍然不起作用!

我的任務記錄器配置是這樣的:

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

我主要記錄數據庫附加目的地的配置方法相同,但作品。誰能推薦進一步的調試策略?

回答

2

您可以啓用log4net內部調試並將調試信息捕獲到跟蹤偵聽器或系統調試器。我在以下post中給出了類似的建議。

+0

謝謝,我現在就開始吧! :) – Dave 2010-09-01 12:25:13

+0

這是有史以來最好的調試提示。 :)謝謝,這完全幫助我追蹤我的問題! – Dave 2010-09-01 13:49:50

+0

很高興你能找到問題。 :) – Garett 2010-09-02 06:43:16