Ricerca…


introduzione

Log4net è un sistema di registrazione fail-stop. Fail stop significa che interrompe la registrazione di un'eccezione interna e in base alla progettazione non interagisce con il flusso del programma. Sapendo questo ti spiega la risoluzione dei problemi log4net non è così facile. Se la registrazione fallisce, il tuo programma non se ne accorge. Vedete molte domande su: perché il mio log4net logging non funziona? Questo articolo spiega la risoluzione dei problemi di base e le soluzioni più comuni.

Nella maggior parte dei casi il primo passo è abilitare il debugging interno per log4net.

Abilita il debug interno

Ci sono 2 modi per abilitare il debug interno in log4net:

  • Specificare l'opzione log4net.Internal.Debug nel file di configurazione dell'applicazione
  • Abilita il debug interno di log4net a livello di codice

Specificare l'opzione log4net.Internal.Debug nel file di configurazione dell'applicazione

Questo è il metodo preferito per abilitare il debug interno, aggiungere la chiave log4net.Internal.Debug al file app.config dell'applicazione.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

La registrazione di debug inizierà immediatamente all'avvio dell'applicazione.

Abilita il debug interno di log4net a livello di codice

Un secondo modo è farlo a livello di programmazione. Impostare la proprietà log4net.Util.LogLog.InternalDebugging su true:

log4net.Util.LogLog.InternalDebugging = true;

Uscita registro di debug interno

I messaggi di debug interno vengono scritti sulla console e su System.Diagnostics.Trace. Quando devi gestire l'output puoi reindirizzare System.Console.Out. Oppure puoi reindirizzare il messaggio di tracciamento a un file:

<configuration>
...

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace>
</system.diagnostics>

...
</configuration>

Appendici tamponate

Alcuni degli appendici di log4net sono appendici tamponati. Questi appendici verranno registrati solo quando viene registrata una certa quantità di messaggi. Alcuni esempi sono SmtpAppender, RemotingAppender o AdoNetAppender. Questi appendici hanno un'impostazione BufferSize:

<bufferSize value="100" />

Ciò significa che il registratore registrerà quando ci sono 100 messaggi nel buffer. Quando vuoi testare l'appender puoi impostare bufferSize su 1.

Se si tratta del buffer da svuotare su un errore, è possibile utilizzare un programma di valutazione:

<evaluator type="log4net.Core.LevelEvaluator">
     <threshold value="ERROR"/>
</evaluator>

Se la condizione del valutatore è soddisfatta, il buffer verrà svuotato.

Configure () non chiamato, o chiamato più volte

Se non vedi alcuna registrazione, puoi verificare se nella tua applicazione viene chiamato Configure() . Il modo più semplice è aggiungerlo come attributo all'assembly:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

Quindi non è necessario aggiungere log4net.Config.XmlConfigurator.Configure() qualsiasi punto della configurazione. Oppure puoi aggiungere log4net.Config.XmlConfigurator.Configure() in uno dei tuoi metodi di avvio. Assicurati di chiamare la configurazione solo una volta.

L'appender del file non scrive

Se hai un appender di file, assicurati di scrivere in una posizione in cui l'utente è autorizzato a creare e aggiornare i file. Altrimenti la registrazione fallirà. Puoi verificarlo quando hai il debug interno abilitato.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow