Я настроил NLog в приложении ASP.NET Core MVC, используя примеры в документации. Регистрация в файл (target = file) работает без проблем.
Однако при входе в базу данных Sqlite возникает исключение:
2018-10-30 20: 04: 41.4394 Ошибка DatabaseTarget (Name = db): ошибка, когда
запись в базу данных. Исключение: System.InvalidOperationException: должно
добавить значения для следующих параметров: @MachineName, @Logged,
@Level, @Message, @Logger, @Callsite, @Exception at
Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader (CommandBehavior
поведение) в Microsoft.Data.Sqlite.SqliteCommand.ExecuteNonQuery ()
в NLog.Targets.DatabaseTarget.WriteEventToDatabase (LogEventInfo
logEvent) в NLog.Targets.DatabaseTarget.Write (LogEventInfo
LogEvent)
Есть идеи, почему значения этих параметров пусты? А может, параметры вообще не передаются?
Файл конфигурации 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">
<targets>
<target xsi:type="File" name="file" fileName="nlog-${shortdate}.log"
layout="${longdate}|${machinename}|${level:upperCase=true}|${logger}|${callsite}|${message} ${exception:tostring}" />
<target xsi:type="Database"
name="db"
dbProvider="Microsoft.Data.Sqlite.SqliteConnection, Microsoft.Data.Sqlite"
connectionString="Data Source=database.db;">
<commandText>
INSERT INTO Log (MachineName, Logged, Level, Message, Logger, CallSite, Exception)
VALUES (@MachineName, @Logged, @Level, @Message, @Logger, @Callsite, @Exception);
</commandText>
<parameter name="@MachineName" layout="${machinename}" />
<parameter name="@Logged" layout="${longdate}" />
<parameter name="@Level" layout="${level:upperCase=true}" />
<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="*" minlevel="Trace" writeTo="file" />
<logger name="*" minlevel="Info" writeTo="db" />
</rules>
</nlog>