Delen via


IIS-logboek maken en omleiden

Notitie

Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Waarschuwing

Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Belangrijk

Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.

Zie de .NET 9-versie van dit artikelvoor de huidige release.

De ASP.NET Core-module leidt stdout- en stderr-consoleuitvoer om naar schijf als de kenmerken stdoutLogEnabled en stdoutLogFile van het aspNetCore-element zijn ingesteld. Mappen in het stdoutLogFile pad worden gemaakt door de module wanneer het logboekbestand wordt gemaakt. De app-pool moet schrijftoegang hebben tot de locatie waar de logboeken worden geschreven (gebruik IIS AppPool\{APP POOL NAME} om schrijfmachtigingen op te geven, waarbij de tijdelijke aanduiding {APP POOL NAME} de naam van de app-pool is).

Logboeken worden niet geroteerd, tenzij procesrecycling/opnieuw opstarten plaatsvindt. Het is de verantwoordelijkheid van de hoster om de schijfruimte te beperken die de logboeken verbruiken.

Het gebruik van het stdout-logboek wordt alleen aanbevolen voor het oplossen van problemen met het opstarten van apps bij het hosten op IIS of bij het gebruik van ontwikkeltijdondersteuning voor IIS met Visual Studio, niet tijdens het lokaal opsporen van fouten en het uitvoeren van de app met IIS Express.

Gebruik het stdout-logboek niet voor algemene app-logboekregistratie. Voor routinematige logboekregistratie in een ASP.NET Core-app gebruikt u een logboekbibliotheek waarmee de bestandsgrootte van logboekbestanden wordt beperkt en logboeken worden gedraaid. Zie externe logboekregistratieprovidersvoor meer informatie.

Er wordt automatisch een tijdstempel en bestandsextensie toegevoegd wanneer het logboekbestand wordt gemaakt. De naam van het logboekbestand bestaat uit het toevoegen van de tijdstempel, proces-id en bestandsextensie (.log) aan het laatste segment van het stdoutLogFile pad (meestal stdout) gescheiden door onderstrepingstekens. Als het stdoutLogFile pad eindigt met stdout, heeft een logboek voor een app met een PID van 1934 die is gemaakt op 2-5-2018 om 19:42:32 de bestandsnaam stdout_20180205194132_1934.log.

Als stdoutLogEnabled onwaar is, worden fouten die optreden bij het opstarten van de app vastgelegd en verzonden naar het gebeurtenislogboek tot 30 kB. Na het opstarten worden alle extra logboeken verwijderd.

Met het volgende voorbeeldelement aspNetCore configureert u stdout-logboekregistratie op het relatieve pad .\log\. Controleer of de AppPool-gebruikersidentiteit gemachtigd is om naar het opgegeven pad te schrijven.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout"
    hostingModel="inprocess">
</aspNetCore>

Bij het publiceren van een app voor Azure App Service-implementatie stelt de web-SDK de stdoutLogFile waarde in op \\?\%home%\LogFiles\stdout. De omgevingsvariabele %home is vooraf gedefinieerd voor apps die worden gehost door Azure App Service.

Als u logboekregistratiefilterregels wilt maken, raadpleegt u de Logboekfilterregels toepassen in de sectie code van de documentatie voor ASP.NET Core-logboekregistratie.

Zie Bestandspadindelingen op Windows-systemenvoor meer informatie over padindelingen.

Uitgebreide diagnostische logboeken

De ASP.NET Core-module kan worden geconfigureerd om uitgebreide diagnostische logboeken te bieden. Voeg het element <handlerSettings> toe aan het element <aspNetCore> in web.config. Als u de debugLevel instelt op TRACE wordt een hogere betrouwbaarheid van diagnostische gegevens weergegeven:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

Mappen in het pad (logs in het voorgaande voorbeeld) worden door de module gemaakt wanneer het logboekbestand wordt gemaakt. De app-pool moet schrijftoegang hebben tot de locatie waar de logboeken worden geschreven (gebruik IIS AppPool\{APP POOL NAME} om schrijfmachtigingen op te geven, waarbij de tijdelijke aanduiding {APP POOL NAME} de naam van de app-pool is).

Waarden voor foutopsporingsniveau (debugLevel) kunnen zowel het niveau als de locatie bevatten.

Niveaus (in volgorde van minst tot meest uitgebreidheid):

  • FOUT
  • WAARSCHUWING
  • INFORMATIE
  • SPOOR

Locaties (meerdere locaties zijn toegestaan):

  • CONSOLE
  • EVENTLOG
  • BESTAND

De handler-instellingen kunnen ook worden opgegeven via omgevingsvariabelen:

  • ASPNETCORE_MODULE_DEBUG_FILE: Pad naar het logboekbestand voor foutopsporing. (Standaard: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: instelling voor foutopsporingsniveau.

Waarschuwing

Laat niet logboekregistratie voor foutopsporing langer ingeschakeld laten dan nodig is om een probleem op te lossen. De grootte van het logboek is niet beperkt. Als u het ingeschakelde foutopsporingslogboek verlaat, kan de beschikbare schijfruimte worden uitgeput en de server of app-service vastlopen.

Zie Configuratie van ASP.NET Core-module met web.config voor een voorbeeld van het aspNetCore-element in het bestand web.config.