Файл конфигурации NLog для получения значений параметров конфигурации из файла web.config - PullRequest
9 голосов
/ 18 августа 2011

Есть ли способ получить значение из раздела <ApplicationSettings> файла web.config в переменных макета NLog?

Я уже храню данные SMTP в своем файле web.config и не хочу дублироватьнастройки, которые нужно использовать в моем NLog.config.

В идеале я хотел бы сделать что-то вроде: ${aspnet-config:SmtpHostServer}, которое затем извлекает значение из web.config

Ответы [ 2 ]

16 голосов
/ 18 августа 2011

Я не мог найти никакого очевидного способа сделать это, кроме создания своего собственного 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));
    }


}
7 голосов
/ 27 ноября 2016

В настоящее время это возможно без специального кода:

Использовать NLog.Extended и использовать ${appsetting:SmtpHostServer}.

См. документов для $ {appsetting}

Обратите внимание: это пока не поддерживается стандартом .NET Core / .NET.

...