我想从nlog获取值并将它们放入数据库中,但是当我使用当前代码运行我的应用程序时,我会抛出一个带有以下消息的异常;
Must declare the scalar variable \"@MachineName\"."}
这是我的nlog.config文件,任何帮助都会被赞赏=]
<?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>
<target xsi:type="Database"
name="Database"
dbProvider="sqlserver"
useTransactions="true"
connectionString="Data Source=AC-02\SQLEXPRESS;Initial Catalog=Modelfirst.Blogging;Integrated Security=True"
keepConnection="true"
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 :(得分:2)
您的命令文本Machine_Name
和@MachineName
中的拼写错误参数看起来不同。
答案 1 :(得分:1)
大概你需要添加<parameter layout="Layout" name="String" precision="Byte"
scale="Byte" size="Integer"/>
来声明所有参数的含义?
@MachineName失败,因为它是第一个。
您需要为insert语句&amp;中的每个参数声明一个参数。在布局状态下应该是什么nlog变量。
这样:
<parameter layout="${machinename}" name="@MachineName" size="50"/><!-- repeated -->
这是数据库目标的documentation。为每个参数添加如上所示的元素。