2011-08-18 15 views
9

Esiste un metodo per ottenere un valore dalla sezione <ApplicationSettings> di un file web.config all'interno delle variabili di layout di NLog?File di configurazione NLog per ottenere i valori di impostazione della configurazione da un web.config

Ho già memorizzato i dettagli SMTP all'interno del mio web.config e non voglio duplicare le impostazioni solo per l'utilizzo all'interno del mio NLog.config.

Idealmente mi piacerebbe fare qualcosa di simile: ${aspnet-config:SmtpHostServer} che poi recupera il valore dal web.config

risposta

14

non ho potuto vedere alcun modo ovvio per fare questo diverso creare il mio LayoutRenderer (vedi sotto). Se avete deciso di mettere nella vostra propria assemblea non dimenticare di aggiungere il seguente nella vostra NLog.Config:

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

Spero che questo aiuti qualcun altro:

[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

Oggi questo è possibile senza codice personalizzato :

Utilizzare NLog.Extended e utilizzare ${appsetting:SmtpHostServer}.

Vedi docs for ${appsetting}

+0

Grazie per la condivisione @Julian - utili a conoscere. Da allora ho cambiato i provider di registrazione. – DaveHogan

Problemi correlati