NLog использовать имя строки подключения в настройках приложения - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть цель базы данных NLog, которая выглядит следующим образом:

<target xsi:type="Database" name="database"
      connectionString="Server=.\SQLEXPRESS;Database=ApplicationOne;Trusted_Connection=True;MultipleActiveResultSets=true;User Id=User0101;Password=PW0101"   
      commandText="INSERT INTO [SchemaOne].[EventLogs](Id, Message, Level, Logger )VALUES(NewID(), @Message, @Level, @Logger)">
  <parameter name="@Message" layout="${message}" />
  <parameter name="@Level" layout="${level}" />
  <parameter name="@Logger" layout="${logger}" />
</target>

Можно ли изменить connectionString, чтобы вместо этого использовать connectionStringName из моих appsettings?

Мои appsettings называются dssettings.JSON и содержит подробности подключения здесь:

"DatabaseConfiguration": {
    "DatabaseName": "ApplicationOne",
    "ConnectionName": "DefaultConnection",
    "ConnectionString": "Server=.\\SQLEXPRESS;Database=ApplicationOne;Trusted_Connection=True;MultipleActiveResultSets=true;User Id=User0101;Password=PW0101" 
  },

1 Ответ

0 голосов
/ 30 декабря 2018

С помощью nuget-пакета NLog.Appsettings.Standard тогда вы обычно можете сделать это:

  <extensions>
    <add assembly="NLog.Appsettings.Standard" />
  </extensions>
  <targets>
    <target xsi:type="Database" name="database"
          connectionString="${appsettings:name=DatabaseConfiguration.ConnectionString}"   
          commandText="INSERT INTO [SchemaOne].[EventLogs](Id, Message, Level, Logger )VALUES(NewID(), @Message, @Level, @Logger)">
      <parameter name="@Message" layout="${message}" />
      <parameter name="@Level" layout="${level}" />
      <parameter name="@Logger" layout="${logger}" />
    </target>
  </targets>

Но поскольку вы используете специальный dssettings.json (вместо appsettings.json), тогда вам, вероятно, придется реализовать свой собственный рендерер макета NLog:

https://github.com/NLog/NLog/wiki/How-to-write-a-custom-layout-renderer

Может быть, вы можете использовать исходный код из приведенного выше nuget-пакет как вдохновение для погрузки dssettings.json.Или, может быть, создайте PullRequest, в котором добавлена ​​поддержка указания нестандартного имени файла конфигурации.

Update NLog.Extension.Logging ver.1.4.0

С NLog.Extension.Logging ver.1.4.0, теперь вы можете использовать ${configsetting}

См. Также: https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer

...