设置 PHP 版 Cloud Logging

您可以直接使用 PHP 版 Cloud Logging 库,从 PHP 应用向 Cloud Logging 写入日志。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Cloud Logging API。

    启用 API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. 确保您的 Google Cloud 项目已启用结算功能

  7. 启用 Cloud Logging API。

    启用 API

安装 PHP 版 Cloud Logging 库

PHP 版 Cloud Logging 库为 PHP Web 框架提供一种简单的 PSR-3 日志记录器实现。

要从应用中写入日志,请将 PHP 版 Cloud Logging 库添加到 composer.json:

composer require google/cloud-logging

创建 PSR-3 日志记录器

使用以下代码创建 PSR-3 日志记录器:

use Google\Cloud\Logging\LoggingClient;
$logging = new LoggingClient([
    'projectId' => $projectId
]);
$logger = $logging->psrLogger('app');

启用批处理选项

PSR-3 日志记录器会同步发送日志。这意味着只要您发出日志,就会导致用户请求出现 RPC 延迟。特别是如果您在单个请求中发出多个日志,延迟时间会显著增加。您可能希望避免这种情况。

以下代码会创建一个 PSR-3 日志记录器,以在单次 RPC 调用中批处理多个日志:

$logger = LoggingClient::psrBatchLogger('app');

默认情况下,此日志记录器在单个进程中批处理日志。在 App Engine 柔性环境中,您可对 PHP 版 Cloud Logging 库进行配置,以提高吞吐量,并缩短延迟时间。如需了解详情,请参阅配置日志记录守护程序

配置 PHP 版 Cloud Logging 库

您可以自定义 PHP 版 Cloud Logging 库的行为。如需查看可能的配置选项的列表,请参阅配置文档

使用 PSR-3 日志记录器

日志记录器一旦创建,便可在应用中使用:

$logger->info('Hello World');
$logger->error('Oh no');

如需详细了解如何安装,请参阅 PHP 版 Cloud Logging 库的文档。您还可以使用问题跟踪器来报告问题。

使用 Cloud Logging 客户端库写入日志

如需了解如何直接使用 PHP 版 Cloud Logging 客户端库,请参阅 Cloud Logging 客户端库

在 Google Cloud 上运行

为了让应用使用 PHP 版 Cloud Logging 库写入日志,底层资源的服务帐号必须具有 Logs Writer (roles/logging.logWriter) IAM 角色。大多数 Google Cloud 环境都会自动将默认服务帐号配置为使用此角色。

App Engine

系统会自动为 App Engine 启用 Cloud Logging,并且应用的默认服务账号默认拥有 IAM 权限以写入日志条目。

如需了解详情,请参阅写入和查看日志

但是,建议您使用 PSR-3 日志记录器,它会将元数据自动添加到日志中,以便您的应用日志与请求日志关联。

为 App Engine 柔性环境配置守护程序

在 App Engine 柔性环境中,您可对 PHP 版 Cloud Logging 库进行配置,以使用外部守护进程最大程度提高日志吞吐量,并尽量缩短应用延迟时间。要启用此功能,请将下一行添加到 app.yaml 中的 runtime_config 部分:

enable_stackdriver_integration: true

Google Kubernetes Engine (GKE)

GKE 会自动向默认服务帐号授予 Logs Writer (roles/logging.logWriter) IAM 角色。如果您通过此默认服务帐号使用 Workload Identity 以允许工作负载访问特定的 Google Cloud API,则无需进行其他配置。但是,如果您将 Workload Identity 与自定义 IAM 服务帐号搭配使用,请确保自定义服务帐号具有 Logs Writer (roles/logging.logWriter) 的角色。

如果需要,您还可以在创建集群时使用以下命令添加 logging.write 访问权限范围:

gcloud container clusters create example-cluster-name \
    --scopes https://www.googleapis.com/auth/logging.write

Compute Engine

使用 Compute Engine 虚拟机实例时,请为每个实例添加 cloud-platform 访问权限范围。通过 Google Cloud 控制台创建新实例时,您可以在创建实例面板的身份和 API 访问权限部分中执行此操作。请使用 Compute Engine 默认服务账号或您选用的其他服务账号,并在身份和 API 访问权限部分勾选允许所有 Cloud APIs 的全面访问权限。无论您选择哪个服务帐号,都请确保已在 Google Cloud 控制台的 IAM 和管理部分中向该服务帐号授予 Logs Writer 角色

在本地和其他位置运行

如需在 Google Cloud 之外(包括您自己的工作站、您数据中心的计算机或另一家云提供商的虚拟机实例上)使用 PHP 版 Cloud Logging 库,您必须直接向 PHP 版 Cloud Logging 库提供您的 Google Cloud 项目 ID 和相应的服务帐号凭据。

对于现有服务帐号,请执行以下操作:

  1. 向 IAM 授予 Logs Writer (roles/logging.logWriter) IAM 角色。如需详细了解 IAM 角色,请参阅访问权限控制

  2. 设置应用默认凭据

如果您没有服务帐号,请创建一个。如需了解此过程,请参阅创建服务帐号

如需了解有关可用于身份验证的方法的一般信息,请参阅术语:服务帐号

查看日志

在 Google Cloud 控制台中,转到 Logs Explorer 页面。

前往 Logs Explorer

如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

在日志浏览器中,您必须指定一个或多个资源,但资源的选择并不那么显而易见。以下是帮助您上手的一些提示:

  • 如果您将把应用部署到 App Engine 或者您使用的是 App Engine 专用的库,请将资源设置为 GAE 应用

  • 如果您将在 Compute Engine 上部署应用,请将资源设置为 GCE 虚拟机实例

  • 如果您要在 Google Kubernetes Engine 上部署应用,则集群的日志记录配置将确定日志条目的资源类型。如需详细了解旧版 Google Cloud Observability 和 Google Cloud Observability Kubernetes Monitoring 解决方案以及这些选项对资源类型的影响,请参阅迁移到 Google Cloud Observability Kubernetes Monitoring

  • 如果您的应用直接使用 Cloud Logging API,则资源取决于该 API 和您的配置。例如,在您的应用中,您可以指定资源或使用默认资源。

  • 如果您在日志浏览器中没有看到任何日志,若要查看所有日志条目,请切换到高级查询模式并使用空查询。

    1. 如需切换到高级查询模式,请点击日志浏览器顶部的菜单 (▾),然后选择转换为高级过滤条件
    2. 清除过滤条件框中显示的内容。
    3. 点击提交过滤条件

    您可以检查各个条目以找出您的资源。

如需了解详情,请参阅使用日志浏览器