NLog - параметры времени выполнения для целевой базы данных
Я пытаюсь добавить некоторые настройки для своей цели журнала базы данных. В моем NLog.config у меня есть это:
И в моем коде C # у меня есть это:
protected override void updateBeforeLog(LogEventInfo info)
{
info.Properties["dbDatabase"] = "TempDB";
info.Properties["dbUserName"] = "username";
info.Properties["dbPassword"] = "password";
info.Properties["dbHost"] = "SERVER\\SQLSERVER";
info.Properties["commandText"] = "exec InsertLog @LogDate, @LogLevel, @Location, @Message";
info.Parameters = new DatabaseParameterInfo[] {
new DatabaseParameterInfo("@LogDate", Layout.FromString("${date:format=yyyy\\-MM\\-dd HH\\:mm\\:ss.fff}")),
new DatabaseParameterInfo("@LogLevel", Layout.FromString("${level}")),
new DatabaseParameterInfo("@Location", Layout.FromString("${event-context:item=location}")),
new DatabaseParameterInfo("@Message", Layout.FromString("${event-context:item=shortmessage}"))
};
log.Log(info);
}
Но я'получаю ошибку SQL, которая читаетДолжен объявить скалярную переменную@LogDate "".
Свойства работают, потому что соединение успешно. Но почему-то параметры не "связывание» к скалярным переменным в команде.
Если я создаю параметры вручную в файле NLog.config, он отлично работает:
Но это противоречит самой цели возможности настраивать значение commandText и параметров во время выполнения.
Пожалуйста, помогите мне понять, что мне нужно сделать, чтобы цель правильно подобрала значения для параметров. Спасибо!
Обновить
В целом, я хочу иметь способ настроить цели с помощью кода C #. Я хочу положиться на файл NLog.config только столько, сколько нужно. Но похоже, что NLog довольно сильно привязан к настройкам файла конфигурации, и яЯ пытаюсь работать в рамках этого ограничения, но быть максимально гибким. С помощью этой цели базы данных, если я могу выяснить, как программно обновить параметры, тогда у меня может быть довольно общая цель в файле конфигурации, а затем обновить свойства и параметры LogEventInfo, чтобы они соответствовали потребностям любой базы данных для подключения или сохранения. процедура для выполнения.