2013-06-19 56 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> 

就是这样。容易没有? :)