NLog config file to get configuration setting values from a web.config

≯℡__Kan透↙ 提交于 2019-12-18 04:44:11

问题


Is there a method to get a value from the <ApplicationSettings> section of a web.config within NLog layout variables?

I already store SMTP details within my web.config and don't want to duplicate the settings just to use within my NLog.config.

Ideally I'd like to do something like: ${aspnet-config:SmtpHostServer} which then fetches the value from the web.config


回答1:


I couldn't see any obvious way to do this other than creating my own LayoutRenderer (see below). If you're putting into your own assembly don't forget to add the following into your NLog.Config:

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

Hope this helps someone else:

[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));
    }


}



回答2:


Updated Answer

NLog ver. 4.6 includes ${appsetting:SmtpHostServer} in the core NLog-nuget-package. No longer requires NLog.Extended. See also https://github.com/nlog/NLog/wiki/AppSetting-Layout-Renderer

NLog.Extensions.Logging ver. 1.4 includes ${configsetting} that allows one to read settings from appsettings.json. See also https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer

Original Answer

Nowadays this is possible without custom code:

Use NLog.Extended and use ${appsetting:SmtpHostServer}.

See docs for ${appsetting}

Please note: this isn't supported in .NET Core / .NET standard yet.



来源:https://stackoverflow.com/questions/7107499/nlog-config-file-to-get-configuration-setting-values-from-a-web-config

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!