log4net
Log4Net Felsökning
Sök…
Introduktion
Log4net är ett fail-stop-loggningssystem. Fail stop innebär att det slutar logga in på ett internt undantag och genom design inte interagerar med programflödet. Att veta detta förklarar att du felsöker log4net är inte så lätt. Om loggningen misslyckas märker inte ditt program. Du ser många frågor om: varför fungerar inte min log4net-loggning? Den här artikeln förklarar grundläggande felsökning och de vanligaste lösningarna.
I de flesta fall är det första steget att aktivera intern felsökning för log4net.
Aktivera intern felsökning
Det finns två sätt att aktivera intern felsökning i log4net:
- Ange alternativet log4net.Internal.Debug i programmets konfigurationsfil
- Aktivera log4nets interna felsökning programmatiskt
Ange alternativet log4net.Internal.Debug i programmets konfigurationsfil
Detta är den föredragna metoden för att aktivera intern felsökning, lägg till log4net.Internal.Debug-nyckeln till app.config-filen i din applikation.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
Felsökning startar omedelbart när applikationen startar.
Aktivera log4nets interna felsökning programmatiskt
Ett andra sätt är att göra detta programmatiskt. Ställ in log4net.Util.LogLog.InternalDebugging-egenskapen till true:
log4net.Util.LogLog.InternalDebugging = true;
Intern felsökning
Interna felsökningsmeddelanden skrivs till konsolen och till System.Diagnostics.Trace. När du måste konsolera utdata kan du omdirigera System.Console.Out. Eller så kan du omdirigera spårmeddelandet till en fil:
<configuration>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
...
</configuration>
Buffrade appendrar
Vissa av log4net-appendrarna är buffrade appendrar. Dessa appendrar loggar bara när en viss mängd meddelanden loggas. Vissa prover är SmtpAppender, RemotingAppender eller AdoNetAppender. Dessa appendrar har en inställning BufferSize:
<bufferSize value="100" />
Detta betyder att loggaren loggar när det finns 100 meddelanden i bufferten. När du vill testa appendern kan du ställa in buffertstorleken till 1.
Om du vad bufferten som ska spolas på ett fel kan du använda en utvärderare:
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR"/>
</evaluator>
Om villkoren för utvärderaren är uppfyllda spolas bufferten.
Konfigurera () inte anropad eller uppringd flera gånger
Om du inte ser någon loggning kan du kontrollera om Configure() heter i din applikation. Det enklaste sättet är att lägga till det som ett attribut till din montering:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Då behöver du inte lägga till log4net.Config.XmlConfigurator.Configure() någonstans i din konfiguration. Eller så kan du lägga till log4net.Config.XmlConfigurator.Configure() i en av dina startmetoder. Se till att du bara anropar konfigurationen en gång.
File appendern skriver inte
Om du har en filtillägg, se till att du skriver till en plats där användaren får skapa och uppdatera filerna. Om inte kommer loggningen att misslyckas. Du kan kontrollera detta när intern felsökning är aktiverad.