tylerr92 / laravel-stackdriver
为Laravel框架启用对Google Stackdriver的日志记录、跟踪和错误报告
Requires
- php: >=7.3
- google/cloud-error-reporting: ^0.16.2
- google/cloud-logging: ^1.14
- illuminate/support: >=6.0
- opencensus/opencensus: ^0.6.2
- opencensus/opencensus-exporter-stackdriver: ^0.1
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~7.0
- sempro/phpunit-pretty-print: ^1.0
README
为Laravel启用对Google Stackdriver的日志记录、跟踪和错误报告。需要PHP >= 7.1
截图
安装
通过Composer
composer require tylerr92/laravel-stackdriver
并发布配置文件
php artisan vendor:publish --provider="tylerr92\Laravel\Stackdriver\StackdriverServiceProvider"
使用方法
首先,您需要打开 config/stackdriver.php
文件。在这里,您可以看到有四个环境设置可供启用和禁用本包的不同功能
STACKDRIVER_ENABLED=false STACKDRIVER_LOGGING_ENABLED=true STACKDRIVER_TRACING_ENABLED=true STACKDRIVER_ERROR_REPORTING_ENABLED=true
列表中的第一个变量具有优先级。
建议您在 .env 文件中配置以下ENVs
STACKDRIVER_LOGNAME="error-log" STACKDRIVER_ENABLED="true" STACKDRIVER_LOGGING_ENABLED="true" STACKDRIVER_TRACING_ENABLED="true" STACKDRIVER_ERROR_REPORTING_ENABLED="true" STACKDRIVER_KEY_FILE_PATH="path/to/key/file.json" GOOGLE_CLOUD_PROJECT"project-id-14555" IS_BATCH_DAEMON_RUNNING="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 tylerr92\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
来完成的。
这就完成了!
变更日志
有关最近更改的更多信息,请参阅 变更日志。
鸣谢
- 由 [Tyler Radlick] 维护
- 从 [Diederik van den Burger (GlueDev)] 分支
- [所有贡献者][link-contributors]
许可证
许可证。请参阅 许可证文件 了解更多信息。