我已经看到很多线程都提到了这个问题。我已经阅读了它们,但我发现我编写的代码没有任何问题。
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.mono2.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
internalLogLevel="info"
internalLogFile="c:\log.txt">
<targets>
<target type="Database"
name="database"
connectionstring="NLogPriMIODbConnection">
<commandText>
exec dbo.usp_InsertLogEntry @logLevel, @createDate, null,
@message, null, @exception, @stackTrace, @origin
</commandText>
<parameter name="@createDate"
layout="${longdate}" />
<parameter name="@origin"
layout="${callsite}" />
<parameter name="@logLevel"
layout="${level}" />
<parameter name="@message"
layout="${message}" />
<parameter name="@exception"
layout="${exception:format=Message,StackTrace}" />
<parameter name="@stackTrace"
layout="${stacktrace}" />
</target>
</targets>
<rules>
<logger name="*"
minlevel="Trace"
writeTo="database" />
</rules>
</nlog>
连接字符串遵循SQL 2012的http://www.connectionstrings.com/标准
<connectionStrings>
<add
name="NLogPriMIODbConnection"
connectionString="Server=.\SQLExpress;Database=local.XXX;User Id=sa;Password=XXX;"
providerName="System.Data.SqlClient" />
</connectionStrings>
似乎这个我无法找到的神秘问题?
由于
答案 0 :(得分:3)
在您的NLog配置中,您使用了connectionstring
,它需要实际的字符串(即服务器,用户名,密码等)。如果您希望它使用来自您的网络/应用配置的命名连接字符串,则需要使用connectionstringname
代替。
答案 1 :(得分:0)
这就是我的看法如何使用您的值,将连接字符串作为目标的嵌套节点。我确定还有其他方法可以做到这一点,但这就是我当前的配置是如何工作的。
或者,如果您要从app.config中提取连接字符串(如其他答案中所述),您可能希望使用ConnectionStringName prop
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.mono2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogLevel="info" internalLogFile="c:\log.txt">
<targets>
<target type="Database" name="database">
<connectionStrings>
<add name="NLogPriMIODbConnection" connectionString="Server=.\SQLExpress;Database=local.XXX;User Id=sa;Password=XXX;" providerName="System.Data.SqlClient" />
</connectionStrings>
<commandText>
exec dbo.usp_InsertLogEntry @logLevel, @createDate, null, @message, null, @exception, @stackTrace, @origin
</commandText>
<parameter name="@createDate" layout="${longdate}" />
<parameter name="@origin" layout="${callsite}" />
<parameter name="@logLevel" layout="${level}" />
<parameter name="@message" layout="${message}" />
<parameter name="@exception" layout="${exception:format=Message,StackTrace}" />
<parameter name="@stackTrace" layout="${stacktrace}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="database" />
</rules>
</nlog>