Utvecklingstips

Lös problem med log4net-loggning i EPiServer

Log4net är ett väldigt bra verktyg för att logga (framför allt fel) i sin webbapplikation. EPiServer har inbyggt stöd för log4net och bara genom att ta med en fil som heter EPiServerLog.config så kommer både din egen loggning och EPiServers inbyggda att hamna i en fil, via epost eller strömmas via UDP. Vi har dock haft väldigt mycket problem med loggningen i EPiServer som alla tar sin utgångspunkt i att loggningen helt enkelt inte fungerar. Olika typer av workarounds (som att mappa upp en separat loggfil för vår egen loggning) har bara skapat en massa andra problem, med prestanda bland annat.

Ted Nyberg, en av Sveriges namnkunnigaste EPiServer-utvecklare, har i en bloggpost upptäckt varför. Det är inte en av de vanliga orsakerna som att app poolens användare inte har skrivrättigheter i katalogen där loggfilen ska hamna – det är en bugg i EPiServer. Om man har ett klass-objekt för loggning i global.asax så går hela loggningen sönder!

Det tråkiga är ju att det oftast är precis det man har. Ett klassiskt log4net-pattern ser ut såhär:

namespace MyNameSpace 
{
	public class MyClass 
	{
		private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

		public void MyMethod() 
		{
			log.Warn(“Call to MyMethod!”);
		}
	}
}

Det går bra att fortsätta göra så här i ditt EPiServer-projekt,men inte i global.asax.

Läs mer i Ted Nybergs bloggpost som också innehåller en massa andra matnyttiga tips när det gäller loggning i EPiServer.

Andra bloggar om: 
 
Anders Bornholm

2011-10-11 kl. 11:22

Web Analytics