Записи NLog для SQL Server в .NET Core 2.2 - PullRequest
0 голосов
/ 27 января 2019

Я хочу сохранить все мои журналы в таблице в отдельной базе данных журналов, используя NLog, и я не могу заставить ее работать.

Это мой файл конфигурации nlog:

<?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"
      internalLogLevel="Trace"
      internalLogFile="c:\temp\internal-nlog.txt">

    <extensions>
        <add assembly="NLog.Web.AspNetCore"/>
    </extensions>

    <!-- the targets to write to -->
    <targets>
        <target name="dbLogger" xsi:type="Database" 
                connectionStringName="LoggingConnection" commandType="StoredProcedure" 
                commandText="[dbo].[NLog_AddEntry_p]">
            <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="@properties" layout="${all-event-properties:separator=|}" />
            <parameter name="@callsite" layout="${callsite}" />
            <parameter name="@exception" layout="${exception:tostring}" />
        </target>
    </targets>
    <rules>
        <logger name="*" minlevel="Trace" writeTo="dbLogger"/>
    </rules>
</nlog>

Мне удалось заставить его войти в файл .txt с аналогичной конфигурацией, но он не записывает в БД.Строка подключения «LoggingConnection» идентична той, которую я использую для обычных операций CRUD на веб-сайте;разница в том, что используется другая БД.

1 Ответ

0 голосов
/ 27 января 2019

Итак, после некоторой копки, проверяя внутренний файл журнала, я пришел к этому решению.

System.Data.SqlClient был добавлен в проект, и так и должно быть.Также я добавил в проект пакет Nlog.Config Nuget.

Я удалил тег «extension» и внес некоторые изменения в тег nlog

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

Я заменил атрибут «connectionStringName» на «connectionString» и добавил строку подключения из appSettings.json.

...