2011-01-14 15 views
9

Sto utilizzando log4net per registrare gli errori.utilizza log4net senza web.config

Attualmente Ho scaricato il file log4net.dll, poi ha fatto la seguente modifica nel file di global.asax:

private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

protected void Application_Start(object sender, EventArgs e) 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
} 
protected void Application_Error(object sender, EventArgs e) 
{ 
    Log.Fatal("An uncaught exception occurred", this.Server.GetLastError()); 
} 

anche queste sono state apportate modifiche nel file web.config

<log4net> 

<appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
    <param name="File" value="c:\Log4NetExample.log"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
    </layout> 
</appender> 

<root> 

    <level value="All"/> 

    <appender-ref ref="LogFileAppender"/> 
</root> 

tutto funziona .. ma quello di cui ho bisogno è spostare il codice dallo web.config e leggerlo invece da un file di testo.

Inoltre ho bisogno 2 livelli di debug e l'errore ..

Qualcuno mi può aiutare con questo?

Grazie

+0

http://geekswithblogs.net/bsherwin/archive/2008/02/15/119657.aspx – kenny

risposta

15

mettere questo attributo nel file AssemblyInfo.cs:

[assembly:log4net.Config.XmlConfigurator(ConfigFile="Log4Net.config",Watch=true)] 

dove 'Log4net.config' equivale al nome del file di configurazione.

Ci sono naturalmente altri modi per ottenere lo stesso effetto. Ad esempio, puoi lasciare il gestore della sezione di configurazione impostato nel tuo web.config. Spostare l'elemento al proprio file XML, e sostituirlo in web.config con un elemento vuoto, quindi:

<log4net configSource="c:\config\myLog4NetConfig.xml" /> 

L'attributo configSource fornisce il percorso del file esterno (non può essere un percorso UNC, sebbene , deve essere locale alla macchina.)

Per quanto riguarda la configurazione di log4net ... che può diventare un po 'complicato.Vedere questi collegamenti di aiuto e di esempi:

+1

Mi piace avere il mio file di configurazione log4net separato perché consente anche di cambiare rapidamente le modalità senza forzare un ricaricamento dell'assieme, cosa che succederebbe se avessi aggiornato il file web.config. –

+1

Verificare che Log4Net.config disponga di un'impostazione di compilazione di "Copia se più recente". In particolare per i progetti di console. –

+0

E i percorsi relativi? Posso scrivere '' per esempio? –

1

Non so se questo è ciò che si vuole, ma si può mettere lo stesso informazioni di configurazione log4net XML in un file txt, leggere da soli, e poi inizializzare log4net esattamente che XML.

Vedere this question qui su SO per come configurare log4net con xml a livello di codice. Nell'esempio, sto mostrando di inviare xml direttamente a log4net tramite l'API di log4net. Tutto ciò che manca al tuo caso è leggerlo da un file di testo. Penso che se hai copiato le informazioni di configurazione di log4net xml da web.config e le hai incollate in un file di testo, dovresti essere in grado di leggerlo dal file e inviarlo a log4net come mostrato nell'esempio.

Si noti che se si desidera solo la configurazione di registrazione log4net in un file separato da web.config, log4net consente di specificare un file separato contenente solo le informazioni di configurazione log4net (e questa sarebbe una cosa più standard da fare del mio esempio sopra).

Vedere this question per un esempio di come farlo per un'applicazione ASP.NET.

Problemi correlati