我在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">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<targets>
<target name="dbTarget"
xsi:type="Database"
connectionString="Server=SERVER;Database=Log;Trusted_Connection=True;"
commandText="INSERT INTO Logs(LogTime, LogLevel, Message) VALUES (@LogTime, @LogLevel, @Message);">
<!-- Parameters to log -->
<parameter name="@LogTime" layout="${longdate}"/>
<parameter name="@LogLevel" layout="${level}"/>
<parameter name="@Message" layout="${message}"/>
</target>
</targets>
<rules>
<logger name="dbLogger" minlevel="Trace" writeTo="dbTarget" />
</rules>
</nlog>
在代码中,我的记录器是这样的。
var logger = NLogBuilder.ConfigureNLog("nlog.config").GetLogger("dbLogger");
但是它不起作用。如果添加文件规则,它将记录到文件中,因此我的猜测是我的dbTarget配置错误。
答案 0 :(得分:0)
您尝试删除最后一个“;”从commandText:
<target name="dbTarget"
xsi:type="Database"
connectionString="Server=SERVER;Database=Log;Trusted_Connection=True;"
commandText="INSERT INTO Logs(LogTime, LogLevel, Message) VALUES (@LogTime, @LogLevel, @Message)">
答案 1 :(得分:0)
尝试在目标标记中包含dbProvider属性。使用适合您数据库的正确值设置dbProvider属性。您可以在此处找到值:https://github.com/nlog/NLog/wiki/Database-target#connection-options
答案 2 :(得分:0)
尝试修改连接字符串:
connectionString="Data Source=SERVER;Initial Catalog=Log;Integrated Security=True;"
dbProvider="System.Data.SqlClient"