Цель базы данных NLog - PullRequest
       13

Цель базы данных NLog

0 голосов
/ 02 октября 2018

У меня есть следующая цель в файле 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 неверна.

Ответы [ 3 ]

0 голосов
/ 02 октября 2018

Попробуйте включить атрибут dbProvider в целевой тег.Установите для атрибута dbProvider правильное значение, соответствующее вашей базе данных.Вы можете найти значения здесь: https://github.com/nlog/NLog/wiki/Database-target#connection-options

0 голосов
/ 02 октября 2018

Попробуйте изменить строку подключения:

connectionString="Data Source=SERVER;Initial Catalog=Log;Integrated Security=True;" 
dbProvider="System.Data.SqlClient"
0 голосов
/ 02 октября 2018

Вы пытались удалить последний ";"из команды Текст:

<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)">
...