aztech/app-enlight-php-client

此包的最新版本(v0.5.5-beta)没有可用的许可信息。

AppEnlight.com 的 PHP 客户端

此包的规范存储库似乎已丢失,因此已将其冻结。

v0.5.5-beta 2014-12-30 11:52 UTC

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

  • 日志;
  • 错误报告;
  • 慢速请求(带指标)。

要求

安装

要将此 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.40.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 中使用扩展的文档