启用诊断日志记录

已完成

我们提供了内置的诊断功能,可帮助调试应用服务应用。 本单元介绍如何启用诊断日志记录和将检测添加到应用程序,以及如何访问由 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)

  1. 若要为 Azure 门户中的 Windows 应用启用应用程序日志记录,请导航到应用并选择“应用服务日志”

  2. 对“应用程序日志记录(文件系统)”和/或“应用程序日志记录(Blob)”选择“打开”。 “文件系统”选项用于临时调试,在 12 小时后会自行关闭。 “Blob”选项用于长期日志记录,需要提供一个要将日志写入到的 Blob 存储容器。

    注意

    如果重新生成存储帐户的访问密钥,则必须重置相应的日志记录配置才能使用更新的访问密钥。 为此,请关闭日志记录功能,然后再次打开。

  3. 此外,还可以设置日志中包含的详细信息的“级别”,如下表所示

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

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

  1. 在“应用服务日志”中将“应用程序日志”选项设置为“文件系统”

  2. 在“配额(MB)”中,为应用程序日志指定磁盘配额。 在“保持期(天)”中,设置日志要保留的天数。

  3. 完成后,选择“保存”。

启用 Web 服务器日志记录

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

  2. 在“保持期(天)”中,设置日志要保留的天数。

  3. 完成后,选择“保存”。

在代码中添加日志消息

在应用程序代码中,可以使用普通的日志记录功能将日志消息发送到应用程序日志。 例如:

  • 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”目录里的文件。