2011-08-18 4 views
9

NLog 레이아웃 변수 내에서 web.config의 <ApplicationSettings> 섹션에서 값을 가져 오는 방법이 있습니까?NLog 구성 파일을 사용하여 web.config에서 구성 설정 값을 가져옵니다.

이미 내 web.config 내에 SMTP 세부 정보를 저장하고 있으며 내 NLog.config 내에서 사용할 설정을 복제하고 싶지 않습니다. 내가 어떤 확실한 방법 (아래 LayoutRenderer 자신의 참조 내 만드는 대신이 다른 작업을 수행하기 위해 볼 수없는

답변

14

다음의 Web.config에서 값을 가져옵니다 ${aspnet-config:SmtpHostServer} :

이상적으로 내가 좋아하는 일을하고 싶습니다). 당신이 당신의 자신의 어셈블리에 넣어이라면 NLog.Config에 다음을 추가하는 것을 잊지 마세요 :

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


} 
3

현재이 사용자 지정 코드없이 가능하다 :

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

희망이 다른 사람 도움 :

NLog.Extended을 사용하고 ${appsetting:SmtpHostServer}을 사용하십시오.

docs for ${appsetting}

+0

@Julian을 공유해 주셔서 감사합니다. - 유용합니다. 이후 로깅 공급자를 변경했습니다. – DaveHogan

관련 문제