在 Azure 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 之間失敗的要求記錄。 若要指定自定義規則,您可以覆寫 <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 應用程式可以使用 OpenCensus 套件將記錄傳送至應用程式診斷記錄。
資料流記錄
在即時串流記錄之前,請啟用需要的記錄類型。 App Service 會串流寫入控制台輸出或以.txt、.log或儲存在 /home/LogFiles 目錄 (D:\home\LogFiles) 中.htm的任何資訊。
注意
某些類型的記錄緩衝區會寫入記錄檔,這可能會導致資料流程中的順序事件失序。 例如,當使用者瀏覽頁面時所發生的應用程式記錄檔,可能會在頁面要求的對應 HTTP 記錄項目之前顯示在資料流程中。
Azure 入口網站
若要串流 Azure 入口網站 中的記錄,請流覽至您的應用程式,然後選取 [記錄數據流]。
在 Cloud Shell 中
若要在 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 並 登入您的帳戶。 登入之後,請 遵循CloudShell的指示
存取記錄檔
若您為記錄類型設定 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 目錄的內容。
針對 Windows 應用程式,ZIP 檔案包含 App Service 檔案系統中 D:\Home\LogFiles 目錄的內容。 它有下列結構:
記錄類型 | Directory | 描述 |
---|---|---|
應用程式記錄 | /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。
支援的記錄類型
下表顯示支援的記錄類型和描述:
記錄名稱 | 記錄類型 | Windows | Windows 容器 | Linux | Linux 容器 | 描述 |
---|---|---|---|---|---|---|
App Service 控制台記錄 | AppServiceConsoleLogs | Java SE 和 Tomcat | Yes | .是 | Yes | 標準輸出和標準錯誤 3 |
HTTP 記錄 | AppServiceHTTPLogs | Yes | .是 | .是 | Yes | 網頁伺服器記錄 |
App Service 環境 平台記錄 | AppServiceEnvironmentPlatformLogs | Yes | N/A | 是 | Yes | App Service 環境:調整、設定變更和狀態記錄 |
存取稽核記錄 | AppServiceAuditLogs | Yes | .是 | .是 | Yes | 透過 FTP 和 Kudu 的登入活動 |
網站內容變更稽核記錄 | AppServiceFileAuditLogs | Yes | Yes | TBA | TBA | 對網站內容所做的檔案變更;僅適用於 進階版 層和更新版本 |
App Service 應用程式記錄 | AppServiceAppLogs | ASP.NET、.NET Core 和 Tomcat 1 | ASP.NET 和 Tomcat 1 | .NET Core、Java、SE 和 Tomcat 祝福影像 2 | Java SE 和 Tomcat 祝福影像 2 | 應用程式記錄 3 |
IPSecurity 稽核記錄 | AppServiceIPSecAuditLogs | Yes | .是 | .是 | Yes | 來自IP規則的要求 |
App Service 平台記錄 | AppServicePlatformLogs | TBA | Yes | .是 | Yes | 容器作業記錄 |
報告防病毒軟體稽核記錄 | AppServiceAntivirusScanAuditLogs 4 | Yes | .是 | .是 | Yes | 使用 適用於雲端的 Microsoft Defender 的防毒掃描記錄; 僅適用於 進階版 層 |
1 針對 Tomcat 應用程式,將 新增 TOMCAT_USE_STARTUP_BAT
至應用程式設定,並將其設定為 false
或 0
。 必須位於 最新的 Tomcat 版本,並使用 java.util.logging。
2 若為 Java SE 應用程式,請將 新增WEBSITE_AZMON_PREVIEW_ENABLED
至應用程式設定,並將它設定為 true
或 。1
3 目前的記錄限制設為每分鐘 100 個記錄。
4 AppServiceAntivirusScanAuditLogs 記錄類型目前仍處於預覽狀態
網路考量
如需診斷 設定 限制,請參閱有關目的地限制的官方診斷 設定 檔。