NLog - 初始化字符串的格式不符合从索引 0 开始的规范
NLog - Format of the initialization string does not conform to specification starting at index 0
我看到有很多帖子提到了这个问题。我读过它们,我看不出我写的代码有什么问题。
<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>
连接字符串遵循 http://www.connectionstrings.com/ 2012SQL 标准
<connectionStrings>
<add
name="NLogPriMIODbConnection"
connectionString="Server=.\SQLExpress;Database=local.XXX;User Id=sa;Password=XXX;"
providerName="System.Data.SqlClient" />
</connectionStrings>
我怎么找不到这个神秘的问题?
谢谢
在您的 NLog 配置中,您使用了 connectionstring
,它需要实际的字符串(即服务器、用户名、密码等)。如果您希望它使用 web/app 配置中的命名连接字符串,则需要改用 connectionstringname
。
这就是我使用您的值时的样子,将连接字符串作为目标的嵌套节点。我确定还有其他方法可以做到这一点,但这就是我当前的配置方式,并且可以正常工作。
或者,如果您希望从 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>
我看到有很多帖子提到了这个问题。我读过它们,我看不出我写的代码有什么问题。
<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>
连接字符串遵循 http://www.connectionstrings.com/ 2012SQL 标准
<connectionStrings>
<add
name="NLogPriMIODbConnection"
connectionString="Server=.\SQLExpress;Database=local.XXX;User Id=sa;Password=XXX;"
providerName="System.Data.SqlClient" />
</connectionStrings>
我怎么找不到这个神秘的问题?
谢谢
在您的 NLog 配置中,您使用了 connectionstring
,它需要实际的字符串(即服务器、用户名、密码等)。如果您希望它使用 web/app 配置中的命名连接字符串,则需要改用 connectionstringname
。
这就是我使用您的值时的样子,将连接字符串作为目标的嵌套节点。我确定还有其他方法可以做到这一点,但这就是我当前的配置方式,并且可以正常工作。
或者,如果您希望从 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>