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

时间:2011-08-18 12:35:05

标签: web-config nlog appsettings

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

我已经在我的web.config中存储了SMTP详细信息,并且不希望复制这些设置只是为了在我的NLog.config中使用。

理想情况下,我想做类似的事情:${aspnet-config:SmtpHostServer} 然后从web.config中获取值

2 个答案:

答案 0 :(得分:15)

除了创建自己的LayoutRenderer(见下文)之外,我看不到任何明显的方法。如果您正在进行自己的组装,请不要忘记将以下内容添加到NLog.Config中:

<extensions>
   <add assembly="YOURASSEMBLYNAMEHERE" />
</extensions>

希望这有助于其他人:

[LayoutRenderer("aspnet-config")]
public class AspNetConfigValueLayoutRenderer : LayoutRenderer
{
    [DefaultParameter]
    public string Variable
    {
        get;
        set;
    }

    protected override void Append(StringBuilder builder, LogEventInfo logEvent)
    {
        if (this.Variable == null)
        {
            return;
        }
        HttpContext context = HttpContext.Current;
        if (context == null)
        {
            return;
        }
        builder.Append(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings[this.Variable], CultureInfo.InvariantCulture));
    }


}

答案 1 :(得分:5)

现在没有自定义代码就可以实现:

使用NLog.Extended并使用 ${appsetting:SmtpHostServer}

请参阅docs for ${appsetting}

请注意:.NET Core / .NET标准尚不支持此功能。