启用诊断记录
我们提供了内置的诊断功能,可帮助调试应用服务应用。 本单元介绍如何启用诊断日志记录和将检测添加到应用程序,以及如何访问由 Azure 记录的信息。
下表显示了日志记录的类型、支持的平台以及可以存储和查找日志以访问信息的位置。
类型 | 平台 | 位置 | 说明 |
---|---|---|---|
应用程序日志记录 | Windows、Linux | 应用服务文件系统和/或 Azure 存储 Blob | 记录应用程序代码生成的消息。 这些消息可能由所选的 Web 框架生成,或者由应用程序代码使用你的语言的标准日志记录模式直接生成。 为每条消息分配以下类别之一:“严重”、“错误”、“警告”、“信息”、“调试”和“跟踪”。 |
Web 服务器日志记录 | Windows | 应用服务文件系统或 Azure 存储 Blob | 采用 W3C 扩展日志文件格式的原始 HTTP 请求数据。 每条日志消息都包含 HTTP 方法、资源 URI、客户端 IP、客户端端口、用户代理、响应代码等数据。 |
详细的错误消息 | Windows | 应用服务文件系统 | 已发送到客户端浏览器的 .html 错误页的副本。 出于安全原因,不应将详细错误页发送到生产环境中的客户端,但每当出现 HTTP 代码为 400 或更高的应用程序错误时,应用服务都可以保存错误页。 |
失败请求跟踪 | Windows | 应用服务文件系统 | 有关失败请求的详细跟踪信息,包括对用于处理请求的 IIS 组件和每个组件所用的时间的跟踪。 为每个失败的请求生成一个文件夹,其中包含 XML 日志文件,以及用于查看日志文件的 XSL 样式表。 |
部署日志记录 | Windows、Linux | 应用服务文件系统 | 帮助确定部署失败的原因。 部署日志记录会自动发生,它没有可配置的设置。 |
启用应用程序日志记录 (Windows)
若要为 Azure 门户中的 Windows 应用启用应用程序日志记录,请导航到应用并选择“应用服务日志”。
对“应用程序日志记录(文件系统)”和/或“应用程序日志记录(Blob)”选择“打开”。 “文件系统”选项用于临时调试,在 12 小时后会自行关闭。 “Blob”选项用于长期日志记录,需要提供一个要将日志写入到的 Blob 存储容器。
注意
如果重新生成存储帐户的访问密钥,则必须重置相应的日志记录配置才能使用更新的访问密钥。 为此,请关闭日志记录功能,然后再次打开。
此外,还可以设置日志中包含的详细信息的“级别”,如下表所示。
Level 包含的类别 已禁用 无 错误 “错误”、“严重” 警告 “警告”、“错误”、“严重” 信息 “信息”、“警告”、“错误”、“严重” 详细 “跟踪”、“调试”、“信息”、“警告”、“错误”、“严重”(所有类别) 完成后,选择“保存”。
启用应用程序日志记录(Linux/容器)
在“应用服务日志”中将“应用程序日志”选项设置为“文件系统”。
在“配额(MB)”中,为应用程序日志指定磁盘配额。 在“保留期(天)”中,设置日志要保留的天数。
完成后,选择“保存”。
启用 Web 服务器日志记录
对于“Web 服务器日志记录”,请选择“存储”以将日志存储在 Blob 存储上,或选择“文件系统”以将日志存储在应用服务文件系统上。
在“保留期(天)”中,设置日志要保留的天数。
完成后,选择“保存”。
在代码中添加日志消息
在应用程序代码中,可以使用普通的日志记录功能将日志消息发送到应用程序日志。 例如:
ASP.NET 应用程序可使用
System.Diagnostics.Trace
类将信息记录到应用程序诊断日志。 例如:System.Diagnostics.Trace.TraceError("If you're seeing this, something bad happened");
默认情况下,ASP.NET Core 使用
Microsoft.Extensions.Logging.AzureAppServices
日志记录提供程序。Python 应用程序可以使用 OpenCensus 包将日志发送到应用程序诊断日志。
流式传输日志
在实时流式传输日志之前,请启用所需的日志类型。 写入到存储在 /LogFiles
目录 (d:/home/logfiles
) 中的以 .txt、.log 或 .htm 结尾的文件的任何信息都由应用服务进行流式传输。
注意
某些类型的日志记录缓冲区会对日志文件执行写入操作,这可能会导致流中的事件变成混乱。 例如,用户访问页面时出现的应用程序日志项可能会显示在该页面请求所对应的 HTTP 日志项之前的流中。
Azure 门户 - 若要在 Azure 门户中流式传输日志,请导航到应用并选择“日志流”。
Azure CLI - 若要在 Cloud Shell 中实时流式传输日志,请使用以下命令:
az webapp log tail --name appname --resource-group myResourceGroup
本地控制台 - 若要在本地控制台中流式传输日志,请安装 Azure CLI 并登录到你的帐户。 登录后,请按照针对 Azure CLI 显示的说明进行操作。
访问日志文件
如果为日志类型配置 Azure 存储 Blob 选项,需要使用适用于 Azure 存储的客户端工具。
对于存储在应用服务文件系统中的日志,最简单的方法是在浏览器中通过以下链接下载 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 文件包含每个实例的一组日志。 在应用服务文件系统中,这些日志文件是“/home/LogFiles”目录的内容。