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

时间:2020-07-30 08:03:21

标签: asp.net-core logging model-view-controller 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>

在课程中的实现:

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

1 个答案:

答案 0 :(得分:0)

您需要将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">