NLog 在应用程序设置中使用连接字符串名称

问题描述 投票:0回答:2
asp.net logging asp.net-core nlog
2个回答
10
投票

更新 NLog.Extension.Logging 版本。 1.4.0

带有 NLog.Extension.Logging 版本。 1.4.0 那么你现在可以使用

${configsetting}

另请参阅:https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer

原答案

在 nuget-package 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-package 中的 source-code 作为加载

dssettings.json
的灵感。或者也许创建 PullRequest 来添加对指定非默认配置文件名的支持。


0
投票

1-从 nuget 安装 NLog.Extensions.Logging

2-像这样更改连接字符串

 <targets>
<target xsi:type="Database" name="database"
      connectionString="${configsetting:item=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>
© www.soinside.com 2019 - 2024. All rights reserved.