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.log
pliku .
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.