为什么我不能通过 NLog 将日志记录保存到数据库?

Why I can't save logging to database via NLog?

为什么我无法通过 NLog 将日志记录保存到数据库?然后我保存到文件工作正常,但没有保存到数据库。 我的 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">

    <targets>
        <target name="alllogs" xsi:type="File" fileName="C:\Users\Artyrik\Desktop\RVT\RVT_Administrator\RVT_Administrator\file.txt" />

        <target name="database" xsi:type="Database" connectionString="Server=DESKTOP-GDI15RS\SQLEXPRESS;Database=RVTLogs;Trusted_Connection=True;MultipleActiveResultSets=true"
                commandText="insert into dbo.Administrator (
          MachineName, Logged, Level, Message,
          Logger, Callsite, Exception
          ) values (
          @MachineName, @Logged, @Level, @Message,
          @Logger, @Callsite, @Exception
          );">


        <parameter name="@MachineName" layout="${machinename}" />
        <parameter name="@Logged" layout="${date}" />
        <parameter name="@Level" layout="${level}" />
        <parameter name="@Message" layout="${message}" />
        <parameter name="@Logger" layout="${logger}" />
        <parameter name="@Callsite" layout="${callsite}" />
        <parameter name="@Exception" layout="${exception:tostring}" />
      </target>
    </targets>

    <rules>
      <!--<logger name="Admin" minlevel="Trace" writeTo="alllogs" />
      <logger name="User" minlevel="Trace" writeTo="alllogs" />-->
      <logger name="AdminLog" minlevel="Trace" writeTo="database" />
    </rules>
</nlog>

在 Class 中实施:

```
private static Logger _nLog = LogManager.GetLogger("AdminLog");
_nLog.Info(data.IP + " tried to auth.");```

您需要将 internalLogFile 参数添加到您的 nlog 标记中。如果发生错误,您将有一个内部日志并查看您的配置有什么问题:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  autoReload="true"
  internalLogLevel="Info"
  internalLogFile="c:\temp\internal-nlog.txt">