Vytvoření a přesměrování protokolu služby IIS

Poznámka:

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

Upozorňující

Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

Důležité

Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.

Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

Modul ASP.NET Core přesměruje výstup konzoly stdout a stderr na disk, pokud stdoutLogEnabled jsou nastaveny atributy stdoutLogFile elementu aspNetCore . Všechny složky v cestě stdoutLogFile vytvoří modul při vytvoření souboru protokolu. Fond aplikací musí mít přístup k zápisu do umístění, kde se protokoly zapisují (slouží IIS AppPool\{APP POOL NAME} k poskytnutí oprávnění k zápisu, kde zástupný symbol {APP POOL NAME} je název fondu aplikací).

Protokoly se nestřídají, pokud nedojde k recyklaci nebo restartování procesu. Je zodpovědností hostitele omezit místo na disku, které protokoly spotřebovávají.

Použití protokolu stdout se doporučuje pouze při řešení potíží se spuštěním aplikace při hostování ve službě IIS nebo při použití podpory doby vývoje pro službu IIS se sadou Visual Studio, nikoli při místním ladění a spuštění aplikace pomocí služby IIS Express.

Nepoužívejte protokol stdout pro obecné účely protokolování aplikace. Pro rutinní protokolování v aplikaci ASP.NET Core použijte knihovnu protokolování, která omezuje velikost souboru protokolu a obměňuje protokoly. Další informace najdete v tématu Zprostředkovatelé protokolování třetích stran.

Při vytváření souboru protokolu se automaticky přidají časové razítko a přípona souboru. Název souboru protokolu se skládá připojením časového razítka, ID procesu a přípony souboru (.log) k poslednímu stdoutLogFile segmentu cesty (obvykle stdout) odděleného podtržítky. Pokud cesta stdoutLogFile končí stdout, protokol aplikace s PID 1934 vytvořený 2. 5. 2018 v 19:42:32 má název stdout_20180205194132_1934.logsouboru .

Pokud stdoutLogEnabled je false, chyby, ke kterým dochází při spuštění aplikace, se zachytí a vygenerují do protokolu událostí až do 30 kB. Po spuštění se všechny další protokoly zahodí.

Následující ukázkový aspNetCore element nakonfiguruje protokolování stdout v relativní cestě .\log\. Ověřte, že uživatel identity AppPool má oprávnění k zápisu do zadané cesty.

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

Při publikování aplikace pro nasazení služby Aplikace Azure Service nastaví stdoutLogFile webová sada SDK hodnotu na \\?\%home%\LogFiles\stdouthodnotu . Proměnná %home prostředí je předdefinovaná pro aplikace hostované službou Aplikace Azure Service.

Pokud chcete vytvořit pravidla filtru protokolování, přečtěte si část Kód pravidla filtru protokolu v dokumentaci k protokolování ASP.NET Core.

Další informace o formátech cest naleznete v tématu Formáty cesty k souborům v systémech Windows.

Rozšířené diagnostické protokoly

Modul ASP.NET Core je konfigurovatelný tak, aby poskytoval rozšířené diagnostické protokoly. <handlerSettings> Přidejte prvek do elementu <aspNetCore> v souboru web.config. debugLevel Nastavení pro TRACE zveřejnění vyšší přesnosti diagnostických informací:

<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>

Všechny složky v cestě (logs v předchozím příkladu) vytvoří modul při vytvoření souboru protokolu. Fond aplikací musí mít přístup k zápisu do umístění, kde se protokoly zapisují (slouží IIS AppPool\{APP POOL NAME} k poskytnutí oprávnění k zápisu, kde zástupný symbol {APP POOL NAME} je název fondu aplikací).

Hodnoty úrovnědebugLevel ladění můžou zahrnovat úroveň i umístění.

Úrovně (v pořadí od nejméně po většinu podrobných):

  • CHYBA
  • UPOZORNĚNÍ
  • INFO
  • TRACE

Umístění (je povoleno více umístění):

  • KONZOLA
  • EVENTLOG
  • SOUBOR

Nastavení obslužné rutiny lze také poskytnout prostřednictvím proměnných prostředí:

  • ASPNETCORE_MODULE_DEBUG_FILE: Cesta k souboru protokolu ladění. (Výchozí: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: Nastavení na úrovni ladění.

Upozorňující

Nezanechujte protokolování ladění povolené v nasazení déle, než je nutné k řešení potíží. Velikost protokolu není omezená. Ponechání povoleného protokolu ladění může vyčerpat dostupné místo na disku a dojít k chybě serveru nebo služby App Service.

Příklad elementu web.config v souboru najdete v části Konfigurace ASP.NET základního aspNetCore moduluweb.config.