aztech / app-enlight-php-client
AppEnlight.com 的 PHP 客户端
此包的规范存储库似乎已丢失,因此已将其冻结。
Requires
- php: >=5.3.2
Requires (Dev)
- phpunit/phpunit: 4.1.*
This package is not auto-updated.
Last update: 2020-04-13 04:49:55 UTC
README
重要:此库处于开发中。您可以在自己的风险下将其用于生产性应用程序!
AppEnlight 的 PHP 客户端(之前称为 Errormator)。
App Enlight 的主要目标是监控您的应用程序。此 API 客户端为 PHP 提供了一个易于使用的接口,可以将其发送到 App Enlight
- 日志;
- 错误报告;
- 慢速请求(带指标)。
要求
- PHP 5.3.2+,且 cURL 扩展可用;
- 支持 OpenSSL 以进行 HTTPS curl 请求(如果您想使用 http,则不需要此功能);
- (可选)在 httpd.conf 中启用 mod_unique_id 模型 https://httpd.apache.ac.cn/docs/2.2/mod/mod_unique_id.html;
安装
要将此 API 安装到您的应用程序中,请将所有文件夹复制到应用程序可访问的位置。然后,每当您想使用 App Enlight PHP 客户端时,应使用以下命名空间
use AppEnlight;
框架集成
您可以在任何 PHP 应用程序中使用此 PHP 客户端,但您需要一点努力才能将客户端集成到您的应用程序中。如果您使用的是 Yii 框架,那么您真的很幸运 :) 此 PHP 客户端附带扩展,允许在 Yii 框架中使用客户端,无需太多努力。如果您想为其他框架添加支持,请随时联系我。
传递您的应用程序 API 密钥
最重要的是,在初始化客户端之前,您需要传递在 App Enlight 控制台中为您的应用程序生成的私有 API 密钥。如果您愿意,可以设置其他设置以符合您的需求。请注意,您可以省略其他设置,客户端仍然可以工作。以下示例显示了所有可用设置
$settings = new \AppEnlight\Settings(); $settings->setApiKey('123APIKEY'); $settings->setClient('php'); $settings->setScheme('https'); $settings->setUrl('api.appenlight.com/api'); $settings->setVersion('0.5'); return $settings;
创建客户端
一旦定义了设置,就可以将其传递给客户端。
$client = new \AppEnlight\Client($settings);
发送日志数据
一旦创建了客户端,您需要决定您想发送什么类型的信息。您可以选择两个端点
- 日志;
- 报告。
第一个非常简单,用于存储来自您应用程序的日志。
use \AppEnlight\Endpoint\Logs; use \AppEnlight\Endpoint\Data\Log; $uuid = $client->getUUID(); /* add just 1 log */ $aeLog = new Log(); $aeLog->setMessage("Test message"); $aeLog->setLogLevel('error'); $aeLog->setNamespace('application.site.signin'); $aeLog->setDate('2014-07-21T00:15:38.955371'); $aeLog->setRequestId($uuid); $aeLog->setServer('localhost'); $client->addLog($aeLog); $client->setEndpoint($aeLogs);
发送报告数据
您可以在一个请求中发送多个报告。每个报告可能包含不同的数据集。您可以发送有关慢速调用的信息,包括跟踪信息、错误信息等。
以下示例展示了如何发送简单的报告
use \AppEnlight; use \AppEnlight\Endpoint; use \AppEnlight\Endpoint\Data; use \AppEnlight\Endpoint\Data\Report; //get client $client = new Client($settings); //prepare report detail data $report = new Report(); $report->setUsername('test user'); $report->setUrl('https://'); $report->setIp('127.0.0.1'); $report->setUserAgent('Chrome'); $report->setMessage('Very serious error'); $report->setRequestId($client->getUUID()); $report->setRequestStats(new RequestStats()); //analyse trace returned by exception $trace = $exception->getTrace(); foreach($trace as $t) { $aeTrace = new Traceback(); $aeTrace->setFile(isset($t['file']) ? $t['file'] : 'unknown'); $aeTrace->setFn(isset($t['class']) ? "{$t['class']}->{$t['function']}" : $t['function']); $aeTrace->setLine(isset($t['line']) ? $t['line'] : 0); $reportDetail->addTraceback($aeTrace); } $report->setRequest(new Request();); $report->setError('Very dangerouse error'); $report->setHttpStatus(500); $client->addReport($report); $client->send();
从版本 0.4 升级到 0.5
请注意,与版本 0.4 相比,版本 0.5 中的 API 已发生变化。简要来说,报告分组已更改,并且从版本 0.5 开始,report_details 的内容成为了单个报告的一部分。有关更多详细信息,请比较版本 0.4 和 0.5 的报告端点文档
Laravel5 集成
- 运行
php artisan vendor:publish --provider="AppEnlight\Laravel\ServiceProvider"
来发布配置(config/app-enlight.php
) - 将
AppEnlight\Laravel\ServiceProvider
添加到您的config/app.php
文件中的 providers 数组中 - 在
App\Exceptions\Handler
中添加 2 行到report
函数
//Send error report to AppEnlight global $app; $app->make('AppEnlight\Laravel\ErrorHandler', $e);
最终的函数应该如下所示
public function report(Exception $e) { //Send error report to AppEnlight global $app; $app->make('AppEnlight\Laravel\ErrorHandler', $e); return parent::report($e); }
待办事项
- 添加有关如何在 Yii 中使用扩展的文档