Het loggen van foutmeldingen in ASP.NET Core werkt iets anders dan in bijvoorbeeld ASP.NET. Er wordt niet zomaar een exception met foutmelding op het scherm geprint die je kunt weergeven met IIS’ gedetailleerde foutmeldingen. In dit artikel leggen we je uit hoe je in ASP.NET Core foutmeldingen kunt loggen en opslaan.

Foutrapportage met ASP.NET Core op IIS

In ASP.NET Core kun je redelijk eenvoudig foutrapportage aanzetten. Je slaat dan fouten op in logbestanden met behulp van de ASP.NET Core Module stdout log.

Ga hiervoor als volgt te werk:

  • Deployment met Web Deploy
    • maak een map in je webapplicatie projectfolder genaamd logs.
    • open het web.config-bestand, en zet de parameter stdoutLogEnabled op true en wijzig het stdoutLogFile-pad naar de logs map. Dat is bijvoorbeeld .\logs\stdout. Hier is stdout in het pad het voorvoegsel van het logbestand. Een timestamp, proces-id en bestandsextensie worden automatisch toegevoegd als een log wordt gemaakt. Als je stdout als voorvoegsel gebruikt dan is een typische naam van het log: stdout_20120113184032_5412.log.
    • publiceer je webapplicatie met de map logs
  • Via FTP
    • log in op de FTP-server, en maak een map logs aan binnen de www-map.
    • download het web.config-bestand, en zet de parameter stdoutLogEnabled op true en wijzig het stdoutLogFile-pad naar de logs map.
    • upload het web.config-bestand
  • Maak de map logs beschrijfbaar via MyVevida

Als je nu een HTTP-verzoek maakt naar je webapplicatie en hieruit volgt een fout, dan wordt de fout gelogd. Je downloadt daarna het foutenlogbestand, en als je deze hebt geanalyseerd kun verbeteringen aanbrengen in je webapplicatie. Wist je dat je website hierdoor stabieler en beter presteert?

Het maken van logbestanden gaat ten koste van de performance. Zet het alleen aan als je het nodig hebt en daarna weer uit.

Uitgebreidere logging

Als je wilt kun je nog uitgebreidere logs verkrijgen door het debuglevel uitgebreider in te stellen. Voeg hiervoor de volgende handler-instellingen toe aan het web.config-bestand:

<aspNetCore processPath="dotnet"
	arguments=".\Vevida_BlazorApp.dll"
	stdoutLogEnabled="true"
	stdoutLogFile=".\logs\stdout"
	hostingModel="inprocess">
	<handlerSettings>
		<handlerSetting name="debugLevel" value="file" />
		<handlerSetting name="debugFile" value="D:\www\example.nl\temp\ancm.log" />
	</handlerSettings>
</aspNetCore>

In dit voorbeeld wordt het stdout-logbestand opgeslagen in \www\logs, en het debug-log in de map \temp (op gelijke hoogte met \www). De map \temp moet ook beschrijfbaar zijn.

Let op: probeer niet om je debug-logbestanden op te slaan op C:! Ook al vind je voorbeelden op het web met daarin value="c:\temp\...". Je webapplicatie gaat ervan stuk. Wél kun je hiervoor dezelfde logdirectory gebruiken als voor stdout: <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />

Foutrapportage van ASP.NET Core uitschakelen

Je kunt de foutrapportage van ASP.NET Core weer eenvoudig uitschakelen. Zet hiervoor de parameter stdoutLogEnabled weer op false in het web.config-bestand. Vergeet niet om het web.config-bestand opnieuw te publiceren of via FTP te uploaden.

Zoals gezegd hierboven: omdat logging ten koste gaat van de performance is het is verstandig om de logging weer uit te zetten als je het niet langer nodig hebt.

Kort samengevat: log fouten om ze te verbeteren, zodat je website beter presteert.

Wat vind jij van dit antwoord?

Voor vragen kun je met ons , mailen of bellen (050 211 0100)

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.