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, чтобы они соответствовали потребностям любой базы данных для подключения или сохранения. процедура для выполнения.

Ответы на вопрос(1)

Ваш ответ на вопрос