2013-06-19 79 views
18

我試圖讓NLog寫入數據庫,但是當我嘗試調試時,它會引發異常,但例外情況是:「NotifyIcon.Program」的類型初始值設定項引發異常。如何配置NLog寫入數據庫?

我的NLog配置文件代碼如下,因爲這似乎是導致問題,因爲它是我更改的唯一代碼。

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true"> 

    <!-- 
    See http://nlog-project.org/wiki/Configuration_file 
    for information on customizing logging rules and outputs. 
    --> 
    <targets> 
    <!-- add your targets here --> 

    <target name="database" xsi:type="Database" /> 
    <target xsi:type="Database" 
      name="String" 
      dbUserName="Layout" 
      dbProvider="sqlserver" 
      useTransactions="false" 
      connectionStringName="String" 
      connectionString="Data Source=AC-02\SQLEXPRESS;Initial Catalog=master;Integrated Security=True" 
      keepConnection="true" 
      dbDatabase="Layout" 
      dbPassword="Layout" 
      dbHost="Layout" 
      installConnectionString="Layout" 
      commandText="INSERT INTO Logs (Machine_Name, Username, Logon_Time, Screensaver_On, Screensaver_Off, Logoff_Time, Program_Start) Values @MachineName, @Username, @LogonTime, @Screensaver_On, @Screensaver_Off, @LogoffTime, @ProgramStart "/> 

    </targets> 

    <rules> 

    <logger name="*" minlevel="Trace" writeTo="database" /> 

    </rules> 
</nlog> 

任何和所有幫助將不勝感激=]

+0

我不是這方面的專家,但首先看看它出現的錯誤,你得到的是與這個文件無關。如果你把這個文件改回原來的樣子,你的代碼是否工作? – abhinav

+0

是的,我設法讓Nlog寫入一個bog標準的文本文件,但是當我把配置文件改爲上面的時候,它會拋出一個異常,這很不利,因爲它告訴我的是一個異常被拋出 –

+0

另一個調試技巧,如果你在命令文本,DB獨立,通過控制檯運行你的查詢,它的工作? – abhinav

回答

0

所以你的意思是,如果你在你的數據庫運行查詢,使用DB控制檯,用樣本數據,你會得到一個錯誤。如果是,那麼問題出現在你想記錄的數據庫模式中。你試圖插入一個數據到數據庫中,它不符合它的模式

+0

下的[外部代碼],可能此鏈接將有所幫助。 http://geekswithblogs.net/jkrebsbach/archive/2012/02/23/type-in​​itializer-for-classname-threw-an-exception.aspx – abhinav

1

它看起來你的插入字符串不是正確的格式?您在參數列表中缺少()。

commandText="INSERT INTO Logs (Machine_Name, Username, Logon_Time, Screensaver_On, Screensaver_Off, Logoff_Time, Program_Start) Values (@MachineName, @Username, @LogonTime, @Screensaver_On, @Screensaver_Off, @LogoffTime, @ProgramStart) " 
+0

我糾正了我的代碼,但異常仍在拋出,感謝您的幫助btw =] –

0

你還寫了2個目標。還有很多你不需要設置的屬性。應該是:

<target name="DbLog" xsi:type="Database" connectionString="YourConStr" 
     commandText="insert into [blablablabal] (Col1) values (@val1)"> 
    <parameter name="@val1" layout="${level}" /></target> 

就是這樣。容易沒有? :)