Web config NLog配置文件,用于从web.config获取配置设置值

Web config NLog配置文件,用于从web.config获取配置设置值,web-config,nlog,appsettings,Web Config,Nlog,Appsettings,是否有方法从NLog布局变量中web.config的部分获取值 我已将SMTP详细信息存储在我的web.config中,不想复制设置以仅在我的NLog.config中使用 理想情况下,我希望执行如下操作:${aspnet config:SmtpHostServer} 然后从web.config中获取值,除了创建自己的LayoutRenderer(见下文),我看不到任何明显的方法。如果要将其放入自己的程序集中,请不要忘记将以下内容添加到NLog.Config中: 希望这对其他人有帮助: [La

是否有方法从NLog布局变量中web.config的
部分获取值

我已将SMTP详细信息存储在我的web.config中,不想复制设置以仅在我的NLog.config中使用

理想情况下,我希望执行如下操作:
${aspnet config:SmtpHostServer}

然后从web.config中获取值,除了创建自己的
LayoutRenderer
(见下文),我看不到任何明显的方法。如果要将其放入自己的程序集中,请不要忘记将以下内容添加到NLog.Config中:


希望这对其他人有帮助:

[LayoutRenderer(“aspnet配置”)]
公共类AspNetConfigValueLayoutRenderer:LayoutRenderer
{
[默认参数]
公共字符串变量
{
得到;
设置
}
受保护的覆盖无效附加(StringBuilder生成器,LogEventInfo logEvent)
{
if(this.Variable==null)
{
返回;
}
HttpContext=HttpContext.Current;
if(上下文==null)
{
返回;
}
Append(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings[this.Variable],CultureInfo.InvariantCulture));
}
}

更新答案

NLog版本。4.6在核心NLog nuget包中包含
${appsetting:SmtpHostServer}
。不再需要NLog.Extended。另见

NLog.Extensions.Logging-ver。1.4包括允许从appsettings.json读取设置的
${configsetting}
。另见

原始答案

如今,无需自定义代码即可实现这一点:

使用和使用
${appsetting:SmtpHostServer}


请注意:这在.NET Core/.NET标准中还不受支持。

感谢您分享@Julian-非常有用。我已经改变了日志提供商。