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

Dav*_*gan 11 web-config nlog appsettings

有没有一种方法可以从<ApplicationSettings>NLog布局变量中的web.config部分获取值?

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

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

Dav*_*gan 17

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

<extensions>
   <add assembly="YOURASSEMBLYNAMEHERE" />
</extensions>
Run Code Online (Sandbox Code Playgroud)

希望这有助于其他人:

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


}
Run Code Online (Sandbox Code Playgroud)


Jul*_*ian 11

现在,如果没有自定义代码,这是可能的:

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

查看$ {appsetting}的文档

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