Nella mia esperienza, log4net di solito ingoia eventuali errori interni, risultando semplicemente in istruzioni di log che non producono alcun risultato.
Quello che potresti voler provare è abilitare la registrazione interna di log4net. Puoi farlo aggiungendo quanto segue alle tue appSettings
sezione:
<add key="log4net.Internal.Debug" value="true" />
Questo imposta la proprietà LogLog.InternalDebugging
su true
. log4net ora registrerà sull'output standard e sui flussi di errore e sui listener di traccia configurati.
È possibile utilizzare la configurazione seguente per acquisire tutti i messaggi registrati per la traccia:
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\TextWriterOutput.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
Tutti i messaggi registrati internamente da log4net appariranno in TextWriterOutput.log
. Se ricevi una SecurityException
quando aggiungi il trace listener alla tua configurazione, molto probabilmente l'identità dell'apppool non ha diritti sufficienti per creare un file nella posizione specificata (nell'esempio:c:\
). Prova un'altra posizione o concedi diritti sufficienti all'identità dell'apppool.