本文介紹了調(diào)試ADO Log4net附加器(這不是附加程序)的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我以前用過它,但現(xiàn)在它不工作了,過去兩個小時(shí)我一直在絞盡腦汁地想弄明白它。
我有幾個附加器,其中一些用于”主”日志,另一個用于另一個”任務(wù)”日志。主日志有4個附加器:控制臺、內(nèi)存、文件和數(shù)據(jù)庫(Sqlite3)。任務(wù)日志有3個附加項(xiàng):內(nèi)存、文件和數(shù)據(jù)庫(也稱為SQLite)。
讓我抓狂的是,除了任務(wù)日志的數(shù)據(jù)庫附加器之外,所有的附加器都工作得很好。任務(wù)數(shù)據(jù)庫附加器沒有什么特別之處,除了我使用ThreadContext屬性將特定于任務(wù)的數(shù)據(jù)放入日志中。就像我說的,所有這些數(shù)據(jù)都很好地出現(xiàn)在文本文件和內(nèi)存緩沖區(qū)中。
我在輸出窗口中查找了與DB附加器相關(guān)的錯誤,但沒有任何錯誤。我已經(jīng)在我的配置XML文件中比較了這兩個DB附加器,它們是相同的……我甚至從Mix中刪除了我的自定義屬性,任務(wù)數(shù)據(jù)庫附加器仍然不起作用!
我的任務(wù)記錄器配置如下:
<logger name="TaskLogger">
<level value="DEBUG" />
<appender-ref ref="TaskLogFile" />
<appender-ref ref="TaskLogDB" />
<appender-ref ref="TaskLogMemory" />
</logger>
我的數(shù)據(jù)庫附加器配置如下:
<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>
我的主日志數(shù)據(jù)庫附加器以相同的方式配置,但它工作。有人能推薦進(jìn)一步的調(diào)試策略嗎?
推薦答案
您可以啟用Log4net內(nèi)部調(diào)試,并將調(diào)試消息捕獲到跟蹤偵聽器或系統(tǒng)調(diào)試器。我在以下post中給出了類似的建議。
這篇關(guān)于調(diào)試ADO Log4net附加器(這不是附加程序)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,