IIS 記錄檔建立和重新導向
注意
這不是這篇文章的最新版本。 如需目前版本,請參閱本文的 .NET 8 版本。
警告
不再支援此版本的 ASP.NET Core。 如需詳細資訊,請參閱 .NET 和 .NET Core 支援原則。 如需目前版本,請參閱本文的 .NET 8 版本。
如果已設定 aspNetCore
元素的 stdoutLogEnabled
和 stdoutLogFile
屬性,ASP.NET Core 模組就會將 stdout 和 stderr 主控台輸出重新導向到磁碟。 建立記錄檔後,模組會建立 stdoutLogFile
路徑中的所有資料夾。 應用程式集區必須具有記錄檔寫入位置的寫入權限 (請使用 IIS AppPool\{APP POOL NAME}
來提供寫入權限,其中預留位置 {APP POOL NAME}
是應用程式集區名稱)。
除非發生處理序回收/重新啟動,否則不會輪替記錄檔。 主機服務提供者必須負責限制記錄檔所使用的磁碟空間。
只有在裝載於 IIS 或使用 Visual Studio 中針對 IIS 的開發時間支援時,而不是在本機偵錯並使用 IIS Express 執行應用程式時,才建議使用 stdout 記錄來針對應用程式啟動問題進行疑難排解。
請勿將 stdout 記錄檔用來進行一般應用程式記錄。 針對 ASP.NET Core 應用程式中的例行性記錄,請使用會限制記錄檔大小並輪替記錄檔的記錄程式庫。 如需詳細資訊,請參閱協力廠商記錄提供者。
建立記錄檔時,系統會自動新增時間戳記和副檔名。 記錄檔名稱會藉由將時間戳記、處理序識別碼及副檔名 (.log
) 以底線分隔並附加至 stdoutLogFile
路徑的最後一個區段 (通常是 stdout
) 來組成。 如果 stdoutLogFile
路徑的結尾是 stdout
,則在 2018 年 2 月 5 日 19:42:32 建立且 PID 為 1934 的應用程式記錄檔檔案名稱會是 stdout_20180205194132_1934.log
。
若 stdoutLogEnabled
為 false,會擷取在應用程式啟動時發生的錯誤,並發出最大 30KB 的事件記錄檔。 啟動之後,就會捨棄其他的記錄檔。
下列範例 aspNetCore
元素會在相對路徑 .\log\
設定 stdout 記錄。 請確認 AppPool 使用者 identity 具備所提供路徑的寫入權限。
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
</aspNetCore>
發佈適用於 Azure App Service 部署的應用程式時,Web SDK 會將 stdoutLogFile
值設定為 \\?\%home%\LogFiles\stdout
。 環境變數 %home
是針對 Azure App Service 所裝載的應用程式預先定義的。
若要建立記錄篩選規則,請參閱 ASP.NET Core 記錄文件中的在程式碼中套用記錄篩選規則一節。
如需路徑格式的詳細資訊,請參閱 Windows 系統上的檔案路徑格式。
增強型診斷記錄
ASP.NET Core 模組是可設定的,以提供增強型診斷記錄。 將 <handlerSettings>
元素新增至 web.config
中的 <aspNetCore>
元素。 將 debugLevel
設定為 TRACE
會公開精確性更高的診斷資訊:
<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>
建立記錄檔後,模組會建立路徑 (在上述範例中的 logs
) 中的所有資料夾。 應用程式集區必須具有記錄檔寫入位置的寫入權限 (請使用 IIS AppPool\{APP POOL NAME}
來提供寫入權限,其中預留位置 {APP POOL NAME}
是應用程式集區名稱)。
偵錯層級 (debugLevel
) 值可以同時包含層級和位置。
層級 (順序從最不詳細到最詳細):
- 錯誤
- 警告
- INFO
- TRACE
位置 (允許多個位置):
- 主控台
- EVENTLOG
- FILE
也可以透過環境變數提供處理常式設定:
ASPNETCORE_MODULE_DEBUG_FILE
:偵錯記錄檔的路徑。 (預設值:aspnetcore-debug.log
)ASPNETCORE_MODULE_DEBUG
:偵錯層級設定。
警告
在部署中保持啟用偵錯記錄的時間,不要超過針對問題進行排解疑難所需的時間。 記錄的大小不受限制。 保持啟用偵錯記錄可能會耗盡可用磁碟空間,並讓伺服器或應用程式服務當機。
如需 web.config
檔案中 aspNetCore
元素的範例,請參閱 ASP.NET Core 模組搭配 web.config
時的組態。