在 Azure 应用服务中为应用启用诊断日志记录

Azure 提供内置诊断来帮助调试 Azure 应用服务应用。 本文介绍如何启用诊断日志记录并向应用程序添加监测功能。 你还将了解如何访问 Azure 日志的信息。

注意

从 2024 年 6 月 1 日开始,新创建的应用服务应用可以生成使用命名约定 <app-name>-<random-hash>.<region>.chinacloudsites.cn 的唯一默认主机名。 例如: myapp-ds27dh7271aah175.westus-01.chinacloudsites.cn。 现有应用名称保持不变。

myapp-ds27dh7271aah175.chinanorth3-01.chinacloudsites.cn

本文使用 Azure 门户 和 Azure CLI 来处理诊断日志。 有关使用 Visual Studio 处理诊断日志的信息,请参阅 使用 Visual Studio 排查 Azure 应用服务中的应用问题

除了本文中的日志记录说明之外,还可以使用 Azure Monitor 集成日志记录功能。 有关详细信息,请参阅 将日志发送到 Azure Monitor

注意

应用服务提供专用的交互式诊断工具,可帮助你对应用程序进行故障排除。

还可以使用其他 Azure 服务来改进应用的日志记录和监视功能,例如 Azure Monitor

日志记录类型的概述

类型 平台 日志存储位置 说明
应用程序日志记录 Windows、Linux 应用服务文件系统和/或 Azure 存储块 记录应用程序代码生成的消息。 这些消息可由你选择的 Web 框架生成,也可以使用语言的标准日志记录模式直接从应用程序代码生成。 为每个消息分配以下类别之一: 严重错误警告信息调试跟踪。 启用应用程序日志记录时,可以通过设置严重性级别来选择日志记录的详细程度。
网络服务器日志记录 Windows操作系统 应用服务文件系统或 Azure 存储 Blob 采用 W3C 扩展日志文件格式的原始 HTTP 请求数据。 每个日志消息都包含 HTTP 方法、资源 URI、客户端 IP、客户端端口、用户代理和响应代码等数据。
详细的错误消息 Windows操作系统 应用服务文件系统 已发送到客户端浏览器的 .htm 错误页副本。 出于安全原因,不应将详细的错误页发送到生产中的客户端。 但是,应用服务每次发生 HTTP 代码 400 或更高版本的应用程序错误时,都可以保存错误页。 该页可能包含有助于确定服务器返回错误代码的原因的信息。
失败请求跟踪 Windows操作系统 应用服务文件系统 有关失败请求的详细跟踪信息,包括对用于处理请求的 IIS 组件和每个组件所用的时间的跟踪。 如果要提高站点性能或隔离特定的 HTTP 错误,此信息非常有用。 对于每个失败的请求都会生成一个文件夹。 该文件夹包含用于查看日志文件的 XML 日志文件和 XSL 样式表。
部署日志记录 Windows、Linux 应用服务文件系统 有关何时将内容发布到应用的日志。 部署日志记录会自动进行,部署日志记录没有可配置的设置。 它可以帮助确定部署失败的原因。 例如,如果使用自定义部署脚本,你可能会使用部署日志记录确定该脚本失败的原因。

当日志存储在应用服务文件系统中时,它们受定价层的可用存储的约束。 有关详细信息,请参阅App 服务限制

启用应用程序日志记录 (Windows)

若要在 Azure 门户中为 Windows 应用启用应用程序日志记录,请执行以下作:

  1. 转到应用并选择“ 监视>应用服务日志”。

  2. 对于以下任一选项或两个选项,请选择 “开”

    • 应用程序日志记录(文件系统):此选项用于临时调试。 它在 12 小时内自行关闭。

    • 应用程序日志记录(Blob):此选项适用于长期日志记录。 它需要一个 Blob 存储容器才能将日志写入其中。

      Blob 选项包括日志消息中的其他信息,例如日志消息的源虚拟机实例的 ID、InstanceId线程 ID(Tid)和更精细的时间戳(EventTickCount)。

  3. 对于 级别,请选择要记录的详细信息级别。 下表显示了每个级别包含的日志类别:

    级别 包含的类别
    已禁用
    错误 错误严重
    警告 警告错误严重
    信息 信息警告错误严重
    详细 跟踪调试信息警告错误严重 (所有类别)
  4. 选择“保存”

如果将日志写入 blob,则在删除该应用但保留 blob 中的日志时,不会再应用保留策略。

目前,只能将 .NET 应用程序日志写入 Blob 存储。 Java、PHP、Node.js和 Python 应用程序日志只能存储在应用服务文件系统中,而无需修改代码以将日志写入外部存储。

如果 重新生成存储帐户的访问密钥,则必须重置相应的日志记录配置才能使用更新的访问密钥:

  1. 在“ 配置 ”选项卡上,将相应的日志记录功能设置为 “关闭”。 保存设置。

  2. 再次启用对存储帐户 Blob 的日志记录。 保存设置。

启用应用程序日志记录(Linux 或容器)

若要在 Azure 门户中为 Linux 应用或自定义容器启用应用程序日志记录,请执行以下作:

  1. 转到应用并选择“ 监视>应用服务日志”。

  2. 在“应用程序日志记录”中,选择“文件系统”。

  3. 在“配额(MB)”中,为应用程序日志指定磁盘配额。

  4. 保留期(天)中,设置保留日志的天数。

  5. 选择“保存”

启用 Web 服务器日志记录

若要在 Azure 门户中为 Windows 应用启用 Web 服务器日志记录,请执行以下作:

  1. 转到应用并选择“ 监视>应用服务日志”。

  2. 对于 Web 服务器日志记录,请选择 存储 以在 Blob 存储中存储日志,或选择 文件系统 将日志存储在应用服务文件系统中。

  3. 保留期(天)中,设置保留日志的天数。

  4. 选择“保存”

如果将日志写入 blob,则在删除该应用但保留 blob 中的日志时,不会再应用保留策略。

如果 重新生成存储帐户的访问密钥,则必须重置相应的日志记录配置才能使用更新的密钥:

  1. 在“ 配置 ”选项卡上,将相应的日志记录功能设置为 “关闭”。 保存设置。

  2. 再次启用对存储帐户 Blob 的日志记录。 保存设置。

记录详细错误

若要在 Azure 门户中保存 Windows 应用的错误页或失败的请求跟踪,请执行以下作:

  1. 转到应用并选择“ 监视>应用服务日志”。

  2. “详细错误消息”或“失败的请求跟踪”下,选择“开”。

  3. 选择“保存”

这两种类型的日志都将存储在应用服务文件系统中。 它最多保留 50 个错误(文件或文件夹)。 当 HTML 文件数超过 50 时,应用服务将删除最早的错误文件。

默认情况下,失败的请求跟踪会捕获 HTTP 状态代码在 400 到 600 之间失败的请求的日志。 若要指定自定义规则,请重写文件中的<traceFailedRequests>Web.config节。

在代码中添加日志消息

在应用程序代码中,可以使用常用的日志记录工具将日志消息发送到应用程序日志。 例如:

流式传输日志

在实时流式传输日志之前,请启用所需的日志类型。 应用服务会流式传输写入控制台输出的信息,或存储在 /home/LogFiles 目录中且文件名以 .txt、.log、.htm 结尾的文件内的信息(D:\home\LogFiles)。

注意

某些类型的日志记录缓冲区会写入日志文件,这可能会导致事件在流中出现的顺序不正确。 例如,当用户访问页面时发生的应用程序日志条目可能在页面请求的相应 HTTP 日志条目之前显示在流中。

Azure 门户

若要在 Azure 门户中流式传输日志,请转到应用并选择“ 监视>日志流”。

在本地 shell 中

若要在本地 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 存储的客户端工具。 有关详细信息,请参阅 Microsoft使用 Azure 存储的客户端工具

对于存储在应用服务文件系统中的日志,访问文件的最简单方法是在浏览器中通过以下链接下载 ZIP 文件:

  • Linux 或自定义容器: https://<app-name>.scm.chinacloudsites.cn/api/logs/docker/zip
  • Windows 应用:https://<app-name>.scm.chinacloudsites.cn/api/dump

对于 Linux 或自定义容器,ZIP 文件包含 Docker 主机和 Docker 容器的控制台输出日志。 对于横向扩展的应用,ZIP 文件包含每个实例的一组日志。 在应用服务文件系统中,这些日志文件是 /home/LogFiles 目录的内容。 部署日志存储在 /site/deployments/.

对于 Windows 应用,ZIP 文件包含应用服务文件系统中目录的内容 D:\Home\LogFiles 。 其结构如下:

日志类型 目录 说明
应用程序日志 /LogFiles/Application/ 包含一个或多个文本文件。 日志消息的格式取决于所使用的日志记录提供程序。
失败的请求跟踪 /LogFiles/W3SVC#########/ 包含 XML 文件和一个 XSL 文件。 可以在浏览器中查看带格式的 XML 文件。
详细的错误日志 /LogFiles/DetailedErrors/ 包含 HTM 错误文件。 可以在浏览器中查看 HTM 文件。

查看失败请求跟踪的另一种方法是转到门户中的应用页面。 在左侧菜单中,选择“ 诊断”并解决问题。 搜索 失败的请求跟踪日志,然后选择图标以浏览和查看所需的跟踪。
Web 服务器日志 /LogFiles/http/RawLogs/ 包含使用 W3C 扩展日志文件格式格式化的文本文件。 可以使用文本编辑器或 日志分析器等工具读取这些文件。

应用服务不支持s-computernames-ipcs-version字段。
部署日志 /LogFiles/Git//deployments/ 包含内部部署过程生成的日志以及 Git 部署的日志。

将日志发送到 Azure Monitor

通过 Azure Monitor 集成,可以 创建诊断设置 ,将日志发送到存储帐户、事件中心和 Log Analytics 工作区。 当你添加诊断设置时,应用服务会将应用设置添加到你的应用中,从而触发应用重启。

显示用于显示诊断设置和添加诊断设置的选择的屏幕截图。

支持的日志类型

有关支持的日志类型及其说明的列表,请参阅 Microsoft.Web 支持的资源日志

网络注意事项

有关诊断设置限制的信息,请参阅 目标限制

相关内容