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
.