共用方式為


IIS 記錄檔建立和重新導向

注意

這不是這篇文章的最新版本。 如需目前版本,請參閱本文的 .NET 8 版本

警告

不再支援此版本的 ASP.NET Core。 如需詳細資訊,請參閱 .NET 和 .NET Core 支援原則。 如需目前版本,請參閱本文的 .NET 8 版本

重要

這些發行前產品的相關資訊在產品正式發行前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。

如需目前版本,請參閱本文的 .NET 8 版本

如果已設定 aspNetCore 元素的 stdoutLogEnabledstdoutLogFile 屬性,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 時的組態