Udostępnij za pośrednictwem


Tworzenie i przekierowywanie dzienników usług IIS

Uwaga

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Ostrzeżenie

Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz .NET i .NET Core Support Policy (Zasady obsługi platformy .NET Core). Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Ważne

Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.

Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Moduł ASP.NET Core przekierowuje dane wyjściowe konsoli stdout i stderr do dysku, jeśli stdoutLogEnabled ustawiono atrybuty aspNetCore i stdoutLogFile elementu. Wszystkie foldery w ścieżce stdoutLogFile są tworzone przez moduł podczas tworzenia pliku dziennika. Pula aplikacji musi mieć dostęp do zapisu w lokalizacji, w której są zapisywane dzienniki (służy IIS AppPool\{APP POOL NAME} do udzielania uprawnień do zapisu, gdzie symbol zastępczy {APP POOL NAME} to nazwa puli aplikacji).

Dzienniki nie są obracane, chyba że nastąpi ponowne odtwarzanie/ponowne uruchomienie procesu. Jest to odpowiedzialność hosta za ograniczenie miejsca na dysku używanego przez dzienniki.

Korzystanie z dziennika stdout jest zalecane tylko w przypadku rozwiązywania problemów z uruchamianiem aplikacji podczas hostowania w usługach IIS lub korzystania z obsługi czasu programowania dla usług IIS w programie Visual Studio, a nie podczas debugowania lokalnie i uruchamiania aplikacji za pomocą usług IIS Express.

Nie używaj dziennika stdout do ogólnych celów rejestrowania aplikacji. W przypadku rutynowego rejestrowania w aplikacji ASP.NET Core użyj biblioteki rejestrowania, która ogranicza rozmiar pliku dziennika i obraca dzienniki. Aby uzyskać więcej informacji, zobacz dostawcy rejestrowania innych firm.

Znacznik czasu i rozszerzenie pliku są dodawane automatycznie po utworzeniu pliku dziennika. Nazwa pliku dziennika składa się z dołączania znacznika czasu, identyfikatora procesu i rozszerzenia pliku (.log) do ostatniego segmentu stdoutLogFile ścieżki (zazwyczaj stdout) rozdzielanego znakami podkreślenia. stdoutLogFile Jeśli ścieżka kończy się ciągiem stdout, dziennik aplikacji z identyfikatorem PID z 1934 r. utworzonym w dniu 2.5.2018 o godzinie 19:42:32 ma nazwę stdout_20180205194132_1934.logpliku .

Jeśli stdoutLogEnabled jest to fałsz, błędy występujące podczas uruchamiania aplikacji są przechwytywane i emitowane do dziennika zdarzeń do 30 KB. Po uruchomieniu wszystkie dodatkowe dzienniki zostaną odrzucone.

Poniższy przykładowy aspNetCore element konfiguruje rejestrowanie stdout w ścieżce .\log\względnej . Upewnij się, że użytkownik identity puli aplikacji ma uprawnienia do zapisu w podanej ścieżce.

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

Podczas publikowania aplikacji na potrzeby wdrożenia usługi aplikacja systemu Azure zestaw SDK sieci Web ustawia stdoutLogFile wartość na \\?\%home%\LogFiles\stdout. Zmienna %home środowiskowa jest wstępnie zdefiniowana dla aplikacji hostowanych przez usługę aplikacja systemu Azure.

Aby utworzyć reguły filtru rejestrowania, zobacz sekcję Stosowanie reguł filtru dziennika w kodzie dokumentacji rejestrowania ASP.NET Core.

Aby uzyskać więcej informacji na temat formatów ścieżek, zobacz Formaty ścieżek plików w systemach Windows.

Rozszerzone dzienniki diagnostyczne

Moduł ASP.NET Core można skonfigurować w celu zapewnienia rozszerzonych dzienników diagnostycznych. <handlerSettings> Dodaj element do elementu w pliku <aspNetCore> web.config. Ustawienie elementu debugLevel w celu TRACE uwidocznienia wyższej wierności informacji diagnostycznych:

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

Wszystkie foldery w ścieżce (logs w poprzednim przykładzie) są tworzone przez moduł podczas tworzenia pliku dziennika. Pula aplikacji musi mieć dostęp do zapisu w lokalizacji, w której są zapisywane dzienniki (służy IIS AppPool\{APP POOL NAME} do udzielania uprawnień do zapisu, gdzie symbol zastępczy {APP POOL NAME} to nazwa puli aplikacji).

Wartości poziomu debugowania (debugLevel) mogą obejmować zarówno poziom, jak i lokalizację.

Poziomy (w kolejności od najmniejszej do najbardziej pełnej):

  • BŁĄD
  • OSTRZEŻENIE
  • INFO
  • TRACE

Lokalizacje (dozwolone są wiele lokalizacji):

  • CONSOLE
  • DZIENNIK ZDARZEŃ
  • PLIK

Ustawienia programu obsługi można również udostępnić za pomocą zmiennych środowiskowych:

  • ASPNETCORE_MODULE_DEBUG_FILE: ścieżka do pliku dziennika debugowania. (Ustawienie domyślne: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: Ustawienie poziomu debugowania.

Ostrzeżenie

Nie należy pozostawiać rejestrowania debugowania włączonego we wdrożeniu dłużej niż jest to wymagane do rozwiązania problemu. Rozmiar dziennika nie jest ograniczony. Pozostawienie włączonego dziennika debugowania może wyczerpać dostępne miejsce na dysku i awarii serwera lub usługi app Service.

Zobacz Konfiguracja modułu ASP.NET Core z web.config przykładem aspNetCore elementu w web.config pliku.