Azure 提供內建診斷功能,可協助對 Azure App Service 應用程式進行偵錯。 您會在本文中了解如何啟用診斷記錄,並在您的應用程式中加入檢測。 您也會了解如何存取 Azure 所記錄的資訊。
本文使用 Azure 入口網站和 Azure CLI 來處理診斷記錄。 如需使用 Visual Studio 來處理診斷記錄的詳細資訊,請參閱使用 Visual Studio 針對 Azure App Service 中的應用程式進行疑難排解。
除了本文中的記錄指示之外,您可以使用 Azure 監視器的整合式記錄功能。 如需詳細資訊,請參閱將記錄傳送至 Azure 監視器。
附註
App Service 提供專用的互動式診斷工具來協助您針對應用程式進行疑難排解。 如需詳細資訊,請參閱 Azure App Service 診斷概觀。
您也可以使用其他 Azure 服務來改善應用程式的記錄和監視功能,例如 Azure 監視器。
記錄類型概觀
類型 | 平台 | 記錄儲存位置 | 描述 |
---|---|---|---|
應用程式記錄檔 | Windows、Linux | App Service 檔案系統和/或 Azure 儲存體 Blob | 記錄應用程式程式碼所產生的訊息。 訊息可由您選擇的 Web 架構產生,或使用語言的標準記錄模式直接從應用程式程式碼產生。 每個訊息都會指派下列其中一個類別:嚴重、錯誤、警告、資訊、偵錯或追蹤。 您可以藉由在啟用應用程式記錄時設定嚴重性層級,來選取您想要記錄的詳細資訊。 |
Web 伺服器記錄 | 窗戶 | App Service 檔案系統或 Azure 儲存體 Blob | W3C 擴充記錄檔格式的原始 HTTP 要求資料。 每個記錄訊息都包含 HTTP 方法、資源 URI、用戶端 IP、用戶端連接埠、使用者代理程式和回應碼。 |
詳細的錯誤訊息 | 窗戶 | App Service 檔案系統 | 應已傳送至用戶端瀏覽器 .htm 錯誤頁面的複本。 基於安全性考量,不應將詳細錯誤頁面傳送至生產環境中的用戶端。 但 App Service 可以在每次發生 HTTP 代碼 400 或更高版本的應用程式錯誤時儲存錯誤頁面。 該頁面包含的資訊可協助您判斷為何伺服器傳回錯誤碼。 |
失敗要求的追蹤 | 窗戶 | App Service 檔案系統 | 關於失敗要求的詳細追蹤資訊,包括用於處理要求的 IIS 元件追蹤,以及每個元件所花費的時間。 如果您想要改善網站效能或隔離特定的 HTTP 錯誤,此資訊相當有用。 系統會為每個失敗的要求產生一個資料夾。 該資料夾包含 XML 記錄檔,以及 XSL 樣式表,可用來檢視記錄檔。 |
部署記錄 | Windows、Linux | App Service 檔案系統 | 當您將內容發佈至應用程式時的記錄。 部署記錄會自動發生,因此無須任何組態設定即會記錄部署動作。 部署記錄可協助您判斷部署失敗的原因。 例如,如果您使用自訂部署指令碼,則可以使用部署記錄功能來判斷指令碼失敗的原因。 |
當記錄儲存在 App Service 檔案系統中時,會受限於定價層可用的儲存體。 如需詳細資訊,請參閱 App Service 限制。
啟用應用程式記錄 (Windows)
若要在 Azure 入口網站中啟用 Windows 應用程式的應用程式記錄:
移至您的應用程式,然後選取 [監視]> [App Service 記錄]。
針對其中一個選項或兩個選項都選取 [開啟]:
應用程式記錄 (Filesystem):此選項是針對暫時偵錯目的。 它會在 12 小時內自行關閉。
應用程式記錄 (Blob):此選項是針對長期記錄。 它需要 Blob 儲存體容器以便將記錄寫入其中。
Blob 選項會在記錄訊息中包含其他資訊,例如記錄訊息來源虛擬機器執行個體的識別碼 (
InstanceId
)、執行緒識別碼 (Tid
),以及更細微的時間戳記 (EventTickCount
)。
針對 [層級],選取要記錄的詳細資料層級。 下表顯示每個層級中包含的記錄類別:
層級 包含的分類 已停用 無 錯誤 錯誤、嚴重 警告 警告、錯誤、嚴重 資訊 資訊、警告、錯誤、嚴重 詳細資訊 追蹤、偵錯、資訊、警告、錯誤、嚴重 (所有類別) 選取 [儲存]。
如果您將記錄寫入 Blob,則當您刪除應用程式但將記錄保留在 Blob 中時,保留原則不再適用。 如需詳細資訊,請參閱資源刪除後可能會累算的成本。
目前只能將 .NET 應用程式記錄寫入至 Blob 儲存體。 Java、PHP、Node.js 與 Python 應用程式記錄只能儲存在 App Service 檔案系統上,無須修改程式碼,即可將記錄寫入至外部儲存體。
如果您重新產生儲存體帳戶的存取金鑰,您必須重設個別的記錄組態,才能使用更新的存取金鑰:
在 [設定] 索引標籤上,將個別的記錄功能設定為 [關閉]。 儲存您的設定。
重新啟用記錄至儲存體帳戶的 Blob。 儲存您的設定。
啟用應用程式記錄 (Linux 或容器)
若要在 Azure 入口網站中啟用 Linux 應用程式或自訂容器的應用程式記錄:
移至您的應用程式,然後選取 [監視]> [App Service 記錄]。
在 [應用程式記錄] 中,選取 [檔案系統]。
在 [配額 (MB)] 中,指定應用程式記錄的磁碟配額。
在 [保留期間 (天)] 中,設定保留記錄的天數。
選取 [儲存]。
啟用 Web 伺服器記錄
若要在 Azure 入口網站中啟用 Windows 應用程式的網頁伺服器記錄:
移至您的應用程式,然後選取 [監視]> [App Service 記錄]。
針對 [網頁伺服器記錄],選取 [儲存體] 將記錄儲存在 Blob 儲存體中,或選取 [檔案系統] 將記錄儲存在 App Service 檔案系統中。
在 [保留期間 (天)] 中,設定保留記錄的天數。
選取 [儲存]。
如果您將記錄寫入 Blob,則當您刪除應用程式但將記錄保留在 Blob 中時,保留原則不再適用。 如需詳細資訊,請參閱資源刪除後可能會累算的成本。
如果您 重新產生儲存體帳戶的存取金鑰,您必須重設個別的記錄組態,才能使用更新的金鑰:
在 [設定] 索引標籤上,將個別的記錄功能設定為 [關閉]。 儲存您的設定。
重新啟用記錄至儲存體帳戶的 Blob。 儲存您的設定。
記錄詳細錯誤
若要在 Azure 入口網站中儲存 Windows 應用程式的錯誤頁面或失敗要求追蹤:
移至您的應用程式,然後選取 [監視]> [App Service 記錄]。
在 [詳細錯誤訊息] 或 [失敗要求追蹤] 底下,選取 [開啟]。
選取 [儲存]。
這兩種類型的記錄都會儲存在 App Service 檔案系統中。 保留最多 50 個錯誤 (檔案或資料夾)。 當 HTML 檔案數目超過 50 時,App Service 會刪除最舊的錯誤檔案。
根據預設,失敗要求追蹤會擷取 HTTP 狀態碼介於 400 到 600 之間失敗的要求記錄。 若要指定自訂規則,請覆寫 <traceFailedRequests>
檔案中的 Web.config
區段。
在程式碼中新增記錄訊息
在應用程式程式碼中,您可以使用一般的記錄設備,將記錄訊息傳送至應用程式記錄。 例如:
ASP.NET 應用程式會使用 System.Diagnostics.Trace 類別將資訊記錄到應用程式診斷記錄。 例如:
System.Diagnostics.Trace.TraceError("If you're seeing this, something bad happened");
根據預設,ASP.NET Core 會使用 Microsoft.Extensions.Logging.AzureAppServices 記錄提供者。 如需詳細資訊,請參閱 Azure 中的 ASP.NET Core 記錄。 如需 WebJobs SDK 記錄的相關資訊,請參閱開始使用 Azure WebJobs SDK。
Python 應用程式可以使用 OpenTelemetry 將記錄傳送至應用程式診斷記錄。 如需詳細資訊,請參閱啟用 Azure 監視器 OpenTelemetry。
串流記錄
在即時串流記錄之前,請啟用您想要的記錄類型。 App Service 會串流任何寫入副檔名為 .txt、.log 或 .htm 且儲存在 /home/LogFiles
目錄 (D:\home\LogFiles
) 的主控台輸出或檔案的資訊。
附註
某些記錄緩衝區類型會寫入記錄檔中,這會導致串流中的事件順序不正確。 例如,使用者造訪某個網頁所產生的應用程式記錄項目,可能會比頁面要求的對應 HTTP 記錄項目優先顯示在串流中。
Azure 入口網站
若要串流 Azure 入口網站中的記錄,請移至您的應用程式,然後選取 [監視]> [記錄資料流]。
Cloud Shell
若要在 Azure Cloud Shell 即時串流記錄,請使用下列命令。
重要事項
此命令可能無法搭配裝載於以 Linux 為基礎的 App Service 方案中的 Web 應用程式使用。
az webapp log tail --name appname --resource-group myResourceGroup
若要篩選特定記錄類型,例如 HTTP,請使用 --provider
參數。 例如:
az webapp log tail --name appname --resource-group myResourceGroup --provider http
本機終端機
若要在本機主控台中串流記錄,請安裝 Azure CLI 並登入您的帳戶。 登入之後,請遵循 Cloud Shell 的指示。
存取記錄檔
如果您為記錄類型設定 Azure 儲存體 Blob 選項,您需要可與 Azure 儲存體搭配使用的用戶端工具。 如需詳細資訊,請參閱與 Azure 儲存體搭配使用的 Microsoft 用戶端工具。
針對儲存在 App Service 檔系統中的記錄,請使用 Kudu 引擎加以存取。
- 在 Azure 入口網站中開啟您的應用程式,然後選取 [開發工具>],然後選取 [移至]。
- 在 Kudu 中,選取 [工具>診斷傾印]。
針對 Linux 或自訂容器,ZIP 檔案包含 Docker 主機和 Docker 容器的主控台輸出記錄。 針對擴增應用程式,ZIP 檔案會針對每個執行個體包含一組記錄。 在 App Service 檔案系統中,這些記錄檔是 /home/LogFiles
目錄的內容。 部署記錄會儲存在 /site/deployments/
中。
對於 Windows 應用程式,ZIP 檔案包含 App Service檔案系統中 D:\Home\LogFiles
目錄的內容。 其結構如下:
記錄類型 | 目錄 | 描述 |
---|---|---|
應用程式記錄 | /LogFiles/Application/ |
包含一或多個文字檔。 記錄訊息的格式取決於您使用的記錄提供者。 |
失敗要求追蹤 | /LogFiles/W3SVC#########/ |
包含 XML 檔案和 XSL 檔案。 您可以在瀏覽器中檢視格式化的 XML 檔案。 |
詳細錯誤記錄 | /LogFiles/DetailedErrors/ |
包含 HTM 錯誤檔案。 您可以在瀏覽器中檢視 HTM 檔案。 檢視失敗要求追蹤的另一種方式是在入口網站中移至您的應用程式頁面。 在左側功能表上,選取 [診斷並解決問題]。 搜尋失敗要求追蹤記錄,然後選取圖示來瀏覽和檢視您想要的追蹤。 |
網頁伺服器記錄 | /LogFiles/http/RawLogs/ |
包含使用 W3C 擴充記錄檔格式來格式化的文字檔案。 您可以使用文字編輯器或記錄剖析器之類的工具來讀取這些檔案。 App Service 不支援 s-computername 、s-ip 和 cs-version 欄位。 |
部署記錄 |
/LogFiles/Git/ 和 /deployments/ |
包含由內部部署流程所產生的記錄,以及適用於 Git 部署的記錄。 |
傳送記錄至 Azure 監視器
透過 Azure 監視器整合,您可以建立診斷設定,以將記錄傳送至儲存體帳戶、事件中樞和 Log Analytics 工作區。 當您新增診斷設定時,App Service 會將應用程式設定新增至您的應用程式,而觸發應用程式重新啟動。
支援的記錄類型
如需支援的記錄類型及其描述的清單,請參閱 Microsoft.Web 的支援資源記錄。
網路考量
如需診斷設定限制的詳細資訊,請參閱目的地限制。