2011-08-18 15 views
9

से कॉन्फ़िगरेशन सेटिंग मान प्राप्त करने के लिए एनएलओजी लेआउट चर के भीतर web.config के <ApplicationSettings> सेक्शन प्राप्त करने का कोई तरीका है?एनएलओजी कॉन्फ़िगरेशन फ़ाइल को web.config

मैं पहले से ही अपने web.config के भीतर एसएमटीपी विवरण संग्रहीत करता हूं और सिर्फ अपने NLog.config के भीतर उपयोग करने के लिए सेटिंग्स को डुप्लिकेट नहीं करना चाहता हूं। ${aspnet-config:SmtpHostServer} जो तब web.config से मूल्य को हासिल करेगा

उत्तर

14

मैं किसी भी स्पष्ट रास्ता बनाने मेरे अपने 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)); 
    } 


} 
3

आजकल इस कस्टम कोड के बिना संभव है :

NLog.Extended का उपयोग करें और ${appsetting:SmtpHostServer} का उपयोग करें।

देखें docs for ${appsetting}

+0

@Julian साझा करने के लिए धन्यवाद - पता करने के लिए उपयोगी है। मैंने लॉगिंग प्रदाताओं को बदल दिया है। – DaveHogan

संबंधित मुद्दे