在 Azure App Service 中針對應用程式啟用診斷記錄
注意
從 2024 年 6 月 1 日起,所有新建立的 App Service 應用程式都可以選擇使用命名慣例 <app-name>-<random-hash>.<region>.azurewebsites.net
來產生唯一的預設主機名稱。 現有的應用程式名稱將保持不變。
範例: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
如需詳細資料,請參閱 App Service 資源的唯一預設主機名稱。
這段影片示範如何啟用應用程式的診斷記錄。
下列章節也會說明影片中的步驟。
概觀
Azure 提供內建診斷功能,可協助對 App Service 應用程式 \(英文\) 進行偵錯。 您會在本文中了解如何啟用診斷記錄,並在您的應用程式中加入檢測,以及如何存取 Azure 所記錄的資訊。
本文使用 Azure 入口網站和 Azure CLI 來處理診斷記錄。 如需使用 Visual Studio 來處理診斷記錄的詳細資訊,請參閱 在 Visual Studio 中疑難排解 Azure。
注意
除了本文中的記錄指示之外,還有新的整合式記錄功能與 Azure 監視。 您可以在將記錄傳送至 Azure 監視器一節中找到此功能的詳細資訊。
類型 | 平台 | 位置 | 描述 |
---|---|---|---|
應用程式記錄 | Windows、Linux | App Service 檔案系統和/或 Azure 儲存體 Blob | 記錄應用程式程式碼產生的訊息。 訊息可由您選擇的 Web 架構產生,或使用語言標準記錄模式直接從應用程式程式碼產生。 每個訊息皆會獲指派下列其中一個類別:嚴重、錯誤、警告、資訊、偵錯和追蹤。 您可以藉由在啟用應用程式記錄時設定嚴重性層級,來選取您想要記錄的詳細資訊。 |
網頁伺服器記錄 | Windows | App Service 檔案系統或 Azure 儲存體 Blob | W3C 擴充記錄檔格式的原始 HTTP 要求資料。 每個記錄訊息都包含 HTTP 方法、資源 URI、用戶端 IP、用戶端連接埠、使用者代理程式、回應碼等資料。 |
詳細的錯誤訊息 | Windows | App Service 檔案系統 | 已傳送至用戶端瀏覽器的 .htm 錯誤頁面複本。 基於安全性考量,詳細的錯誤頁面不應傳送至生產環境中的用戶端,但每當發生具有 HTTP 代碼 400 或更大數字代碼的應用程式錯誤時,App Service 皆可儲存錯誤頁面。 該頁面包含的資訊可協助您判斷為何伺服器傳回錯誤碼。 |
失敗要求的追蹤 | Windows | App Service 檔案系統 | 關於失敗要求的詳細追蹤資訊,包括用於處理要求的 IIS 元件追蹤,以及每個元件所花費的時間。 如果您想要改善網站效能或隔離特定的 HTTP 錯誤,這會相當有用。 系統會為每個失敗的要求產生一個資料夾,其中包含 XML 記錄檔,以及用來檢視記錄檔的 XSL 樣式表。 |
部署記錄 | Windows、Linux | App Service 檔案系統 | 當您將內容發佈至應用程式時的記錄。 部署記錄會自動執行,因此無須任何組態設定即會記錄部署動作。 部署記錄可協助您判斷部署失敗的原因。 例如,如果您使用自訂部署指令碼,則可以使用部署記錄功能來判斷指令碼失敗的原因。 |
儲存在 App Service 檔案系統中時,記錄會受限於定價層可用的儲存體 (請參閱 App Service 限制)。
注意
App Service 提供專用的互動式診斷工具來協助您針對應用程式進行疑難排解。 如需詳細資訊,請參閱 Azure App Service 診斷概觀。
此外,您可以使用其他 Azure 服務來改善應用程式的記錄和監視功能,例如 Azure 監視器。
啟用應用程式記錄 (Windows)
若要在 Azure 入口網站中啟用 Windows 應用程式的應用程式記錄,請瀏覽至您的應用程式並選取 App Service 記錄。
針對 [應用程式記錄 (檔案系統)] 或 [應用程式記錄 (Blob)],或上述兩者,選取 [開啟]。
[檔案系統] 選項用於臨時偵錯,會在 12 小時內自行關閉。 [Blob] 選項用於長期記錄,且須具有寫入記錄的 Blob 儲存體容器。 Blob 選項也會在記錄訊息中包含其他資訊,例如記錄訊息來源 VM 執行個體的識別碼 (InstanceId
)、執行緒識別碼 (Tid
),以及更細微的時間戳記 (EventTickCount
)。
注意
目前只能將 .NET 應用程式記錄寫入至 Blob 儲存體。 Java、PHP、Node.js、Python 應用程式記錄只能儲存在 App Service 檔案系統上 (無須修改程式碼,即可將記錄寫入至外部儲存體)。
此外,如果您重新產生儲存體帳戶的存取金鑰,您必須重設個別的記錄組態,才能使用更新的存取金鑰。 若要這樣做:
- 在 [設定] 索引標籤上,將個別的記錄功能設定為 [關閉]。 儲存您的設定。
- 重新啟用記錄至儲存體帳戶 Blob。 儲存您的設定。
選取 [層級] 或要記錄的詳細資料層級。 下表顯示每個層級中包含的記錄類別:
層級 | 包含的類別 |
---|---|
停用 | 無 |
錯誤 | 錯誤、重大 |
警告 | 警告、錯誤、重大 |
資訊 | 資訊、警告、錯誤、重大 |
詳細資訊 | 追蹤、偵錯、資訊、警告、錯誤、重大(所有類別) |
完成後,請選取儲存。
注意
如果您將記錄寫入 Blob,則當您刪除應用程式但將記錄保留在 Blob 中時,保留原則不再適用。 如需詳細資訊,請參閱資源刪除後可能會累算的成本。
啟用應用程式記錄 (Linux/容器)
若要在 Azure 入口網站中啟用 Linux 應用程式或自訂容器的應用程式記錄,請瀏覽至您的應用程式並選取 App Service 記錄。
在 [應用程式記錄] 中,選取 [檔案系統]。
在 [配額 (MB)] 中,指定應用程式記錄的磁碟配額。 在 [保留期間 (天)] 中,設定應保留記錄的天數。
完成後,請選取儲存。
啟用網頁伺服器記錄
若要在 Azure 入口網站中啟用 Windows 應用程式的網頁伺服器記錄,請瀏覽至您的應用程式並選取 [App Service 記錄]。
針對 [網頁伺服器記錄],選取 [儲存體] 以將記錄儲存在 Blob 儲存體上,或選取 [檔案系統] 以將記錄儲存在 App Service 檔案系統上。
在 [保留期間 (天)] 中,設定應保留記錄的天數。
注意
如果您 重新產生儲存體帳戶的存取金鑰,您必須重設個別的記錄組態,才能使用更新的金鑰。 若要這樣做:
- 在 [設定] 索引標籤上,將個別的記錄功能設定為 [關閉]。 儲存您的設定。
- 重新啟用記錄至儲存體帳戶 Blob。 儲存您的設定。
完成後,請選取儲存。
注意
如果您將記錄寫入 Blob,則當您刪除應用程式但將記錄保留在 Blob 中時,保留原則不再適用。 如需詳細資訊,請參閱資源刪除後可能會累算的成本。
記錄詳細錯誤
若要在 Azure 入口網站中儲存 Windows 應用程式的錯誤頁面或失敗的要求追蹤,請瀏覽至您的應用程式並選取 [App Service記錄]。
在 [詳細錯誤記錄] 或 [失敗的要求追蹤] 底下,選取 [開啟],然後選取 [儲存]。
這兩種類型的記錄都會儲存在 App Service 檔案系統中。 保留最多 50 個錯誤 (檔案/資料夾)。 當 HTML 檔案數目超過 50 時,會自動刪除最舊的錯誤檔案。
[失敗要求追蹤] 功能預設會擷取 HTTP 狀態碼介於 400 到 600 之間失敗的要求記錄。 若要指定自訂規則,您可以覆寫 web.config 檔案中的 <traceFailedRequests>
區段。
在程式碼中新增記錄訊息
在應用程式程式碼中,您會使用一般的記錄設備,將記錄訊息傳送至應用程式記錄。 例如:
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 應用程式可以使用 OpenCensus 套件將記錄傳送至應用程式診斷記錄。
資料流記錄
在即時串流記錄之前,請啟用需要的記錄類型。 任何寫入副檔名為 .txt、.log 或 .htm 的主控台輸出或檔案中並存放在 /home/LogFiles 目錄 (D:\home\LogFiles) 的資訊,都會由 App Service 串流。
注意
某些類型的記錄緩衝區會寫入記錄檔,這可能會導致資料流程中的順序事件失序。 例如,當使用者瀏覽頁面時所發生的應用程式記錄檔,可能會在頁面要求的對應 HTTP 記錄項目之前顯示在資料流程中。
Azure 入口網站
若要串流 Azure 入口網站中的記錄,請瀏覽至您的應用程式,然後選取 [記錄資料流程]。
在 Cloud Shell 中
若要在 Cloud Shell 即時串流記錄,請使用下列命令:
重要
此命令可能無法搭配裝載於 Linux 應用程式服務方案中的 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 儲存體用戶端工具。
針對儲存在 App Service 檔案系統中的記錄,最簡單的做法是在瀏覽器中下載 ZIP 檔案:
- Linux/自訂容器:
https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
- Windows 應用程式:
https://<app-name>.scm.azurewebsites.net/api/dump
針對 Linux/自訂容器,ZIP 檔案包含 Docker 主機和 Docker 容器的主控台輸出記錄。 針對擴增應用程式,ZIP 檔案會針對每個執行個體包含一組記錄。 在 App Service 檔案系統中,這些記錄檔是 /home/LogFiles 目錄的內容。 部署記錄會儲存在 /site/deployments/。
對於 Windows 應用程式,ZIP 檔案包含 App Service檔案系統中 D:\Home\LogFiles 目錄的內容。 其結構如下:
記錄類型 | Directory | 描述 |
---|---|---|
應用程式記錄 | /LogFiles/Application/ | 包含一或多個文字檔。 記錄訊息的格式取決於您使用的記錄提供者。 |
失敗要求追蹤 | /LogFiles/W3SVC#########/ | 包含 XML 檔案和 XSL 檔案。 您可以在瀏覽器中檢視格式化的 XML 檔案。 |
詳細錯誤記錄 | /LogFiles/DetailedErrors/ | 包含 HTM 錯誤檔案。 您可以在瀏覽器中檢視 HTM 檔案。 檢視失敗要求追蹤的另一種方式是在入口網站中瀏覽至您的應用程式頁面。 從左側功能表中,選取 [診斷並解決問題],然後搜尋 [失敗的要求追蹤記錄],然後按一下圖示以瀏覽並檢視您想要的追蹤。 |
Web 伺服器記錄 | /LogFiles/http/RawLogs/ | 包含運用 W3C 擴充記錄檔格式來格式化的文字檔案。 此項資訊可透過文字編輯器或記錄檔剖析器之類的公用程式來讀取。 App Service 不支援 s-computername 、s-ip 或 cs-version 欄位。 |
部署記錄 | /LogFiles/Git/ 和 /deployments/ | 包含由內部部署處理序所產生的記錄,以及適用於 Git 部署的記錄。 |
將記錄傳送至 Azure 監視器
透過新的 Azure 監視器整合,您可以建立診斷設定,將記錄傳送至儲存體帳戶、事件中樞和 Log Analytics。 當您新增診斷設定時,App Service 會將應用程式設定新增至您的應用程式,而觸發應用程式重新啟動。
支援的記錄類型
如需支援的記錄類型及其描述的清單,請參閱 Microsoft.Web 的支援資源記錄。
網路考量
如需了解診斷設定限制,請參閱有關目的地限制的官方診斷設定文件。