kalahroudi/laravel-stackdriver

为Laravel框架启用对Google Stackdriver的日志记录、跟踪和错误报告

dev-develop 2023-04-14 12:43 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:04:20 UTC


README

Latest Version on Packagist Total Downloads

为Laravel启用对Google Stackdriver的日志记录、跟踪和错误报告。需要PHP >= 7.1

屏幕截图

Tracing Error reporting

安装

通过Composer

composer require gluedev/laravel-stackdriver

并发布配置文件

php artisan vendor:publish --provider="GlueDev\Laravel\Stackdriver\StackdriverServiceProvider"

用法

首先,您需要打开 config/stackdriver.php 文件。在这里,您可以看到有四个环境设置可供启用和禁用本包的不同功能

STACKDRIVER_ENABLED=false  
STACKDRIVER_LOGGING_ENABLED=true  
STACKDRIVER_TRACING_ENABLED=true
STACKDRIVER_ERROR_REPORTING_ENABLED=true

列出的第一个变量具有优先级。

身份验证

在撰写本文时,Google建议您使用服务帐户进行身份验证。否则会抛出警告,您可以通过设置 SUPPRESS_GCLOUD_CREDS_WARNING=true 来禁用此警告(但可能不应该)

创建一个具有适当角色附加的服务帐户并将其添加到您的项目中。请确保不要将此文件提交到git中,因为这涉及到安全问题。然后您可以在 keyFilePath 或在 STACKDRIVER_KEY_FILE_PATH 环境变量中指定服务帐户JSON文件的路径。

跟踪

跟踪需要安装OpenCencus模块。由于我们使用docker,这是我们的安装方式

RUN pecl install opencensus-alpha
RUN docker-php-ext-enable opencensus

请注意:如果在安装OpenCencus扩展后遇到 opencensus.so: undefined symbol: ZVAL_DESTRUCTOR 错误,建议您按照 这些说明 自己构建扩展。

日志记录

除了在配置文件中更改值外,日志记录不需要额外的设置。

错误报告

错误报告需要您将以下内容添加到您的 Exceptions/handler.php 文件中的 report 函数

use GlueDev\Laravel\Stackdriver\StackdriverExceptionHandler;

/**  
 * Report or log an exception.
 *
 * @param \Exception  $exception  
 * @return void  
 */
public function report(Exception $exception)  
{  
    StackdriverExceptionHandler::report($exception);  
    parent::report($exception);  
}

登录到Google Cloud控制台,您应该开始看到日志、跟踪和错误出现。

批处理守护进程

Google还提供批处理守护进程,建议使用。我们没有看到在守护进程未运行时请求的首次字节响应时间较慢的问题。最简单运行守护进程的方法是使用Supervisor。以下是一个示例配置,您可以根据需要进行编辑

[program:google-batch-daemon]
command = php -d auto_prepend_file='' -d disable_functions='' /app/vendor/bin/google-cloud-batch daemon
process_name = %(program_name)s
user = application
numprocs = 1
autostart = true
autorestart = true
stdout_logfile = /dev/stdout
stdout_logfile_maxbytes = 0
stderr_logfile = /dev/stderr
stderr_logfile_maxbytes = 0

您还需要告诉Google守护进程正在运行。这是通过设置 IS_BATCH_DAEMON_RUNNING=true 来完成的。

这就完成了!

变更日志

有关最近更改的更多信息,请参阅 变更日志

致谢

许可

有关更多信息,请参阅 许可文件