如何将 nlog.config 中的检测密钥外部化?
Posted
技术标签:
【中文标题】如何将 nlog.config 中的检测密钥外部化?【英文标题】:How to externalize the instrumentation key in nlog.config? 【发布时间】:2021-12-18 21:42:24 【问题描述】:我在我的 .net 核心 webapi 项目中使用 Nlog。我将应用程序洞察力检测密钥保存在 azure key Vault 中。但是有没有办法可以从 nlog.config 文件中的密钥库中获取检测密钥?谢谢!
<target xsi:type="ApplicationInsightsTarget" name="target">
<instrumentationKey>123</instrumentationKey>
<contextproperty name="threadid" layout="$threadid" />
</target>
【问题讨论】:
您可以注册返回 key-vault-value 的自定义布局渲染器:github.com/NLog/NLog/wiki/… 或者您可以使用 NLog.GlobalDiagnosticsContext 和 $gdc 【参考方案1】:谢谢Rolf Kristensen 和ig-sinicyn。发布您的建议作为帮助其他社区成员的答案。
NLog 通过layouts
属性支持动态值。
// Nlog.config
<target type="ApplicationInsightsTarget" name="aiTarget" instrumentationKey="$gdc:item=AppInsightsInstrumentationKey" />
// code
NLog.GlobalDiagnosticsContext.Set(
"AppInsightsInstrumentationKey",
instrumentationKeyFromKeyVault);
ApplicationInsightsTarget 目标传递其instrumentationKey
属性,因此不会扩展AppInsightsInstrumentationKey
值。您可以将Render()
用于 InstrumentationKey 属性。
您可以参考Add layout support for the ApplicationInsightsTarget target、NLog ApplicationInsightsTarget - Add support for using GDC for InstrumentationKey、pass configuration options to the layout render和Gdc layout renderer
【讨论】:
以上是关于如何将 nlog.config 中的检测密钥外部化?的主要内容,如果未能解决你的问题,请参考以下文章
如何在nlog.config中设置debugEnabled / InfoEnabled
使用 InstallNlogConfig 将 Nlog Config 安装到 Eventlog 中