devexpress/logify.alert.php

此包已被弃用且不再维护。未建议替代包。

Logify Alert PHP应用程序客户端

v1.0.2 2018-10-10 09:56 UTC

This package is not auto-updated.

Last update: 2024-01-03 08:48:07 UTC


README

一个PHP客户端,用于向Logify Alert报告异常。

安装

手动安装

  • Logify文件夹复制到您的PHP项目中。
  • 使用以下代码将 LoadHelper.php 文件包含到您用于调用Logify API的PHP脚本中。require_once('/Logify/LoadHelper.php');
  • 通过执行以下代码注册库自动加载器
    spl_autoload_register(array("DevExpress\LoadHelper", "LoadModule"));

库中的所有类都封装在 DevExpress\Logify 命名空间中。如以下示例所示,使用 use 操作符以删除代码中的长名称

use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\Attachment;

使用Composer安装

  • 在项目根目录中创建一个 composer.json 文件或使用现有的一个。
  • 将以下部分添加到 composer.json 文件中。
    "require": {
        "devexpress/logify.alert.php": "dev-master"
    }
  • 执行以下命令:php composer.phar install
  • require __DIR__ . '/vendor/autoload.php'; 添加到您的PHP项目中。客户端库中的所有类都封装在 DevExpress\Logify 命名空间中。如以下示例所示,使用 use 操作符以删除代码中的长名称
use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\Attachment;

快速入门

自动错误报告

use DevExpress\Logify\LogifyAlertClient;
    
    $client = LogifyAlertClient::get_instance();
    $client->apiKey = 'SPECIFY_YOUR_API_KEY_HERE';
    $client->start_exceptions_handling();

手动错误报告

use DevExpress\Logify\LogifyAlertClient;
    
    try {
        $client = LogifyAlertClient::get_instance();
        $client->apiKey = 'SPECIFY_YOUR_API_KEY_HERE';
    }
    catch (Exception $e) {
        $client->send($e);
    }

配置

您可以使用 config.php 文件设置Logify Alert客户端。

<?php
class LogifyAlert{
    public $settings = array(
        'apiKey' => 'SPECIFY_YOUR_API_KEY_HERE',
        'userId' => 'php user',
        'appName' => 'Test PHP Application',
        'appVersion' => '0.0.0.1',
    );
    public $collectExtensions = true;
    public $offlineReportsCount = 10;
    public $offlineReportsDirectory = '<directory-for-offline-reports>';
    public $offlineReportsEnabled = true;
    public $breadcrumbsMaxCount = 1100;

    public $ignoreKeyPattern = '([pP][aA][sS][sS][wW][oO][rR][dD])';
    public $ignoreGetBody = true;
    public $ignorePostBody = true;
    public $ignoreCookies = true;
    public $ignoreFilesBody = true;
    public $ignoreEnvironmentBody = true;
    public $ignoreRequestBody = true;
    public $ignoreServerVariables = true;

}
?>

执行以下代码以便Logify客户端使用创建的配置文件。

    $client->pathToConfigFile = '/config.php';

API

属性

apiKey

字符串。指定用于在Logify服务中注册应用程序的 API密钥

    $client->apiKey = 'SPECIFY_YOUR_API_KEY_HERE';

appName

字符串。指定应用程序名称。

    $client->appName = 'My Application';

appVersion

字符串。指定应用程序版本。

    $client->appVersion = '0.0.0.1';

attachments

附件集合。指定与报告关联的文件集合。每个崩溃报告的附件总大小不得超过 3 Mb。附件名称必须在崩溃报告中是唯一的。

use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\Attachment;

    $client = LogifyAlertClient::get_instance();
    $client->apiKey = 'SPECIFY_YOUR_API_KEY_HERE';
  
    $attachment = new Attachment();
    $attachment->name = "My attachment's unique name per one report";
    $attachment->content = file_get_contents('C:\Work\Image_to_attach.jpg');
  
    // We strongly recommend that you specify the attachment type.
    $attachment->mimeType = 'image/jpeg';
    
    $attachments = array($attachment);
    $client->attachments = $attachments;

面包屑

    $client->breadcrumbs;

BreadcrumbsCollection. 指定与报告相关联的面包屑集合。每个崩溃报告的面包屑总大小不得超过 3 Mb

breadcrumbsMaxCount

    $client->breadcrumbsMaxCount = 1100;

整数。默认值为 1000。指定附加面包屑的最大允许大小。

collectExtensions

    $client->collectExtensions = true;

布尔值。默认值为 false。指定是否收集和发送已加载的 PHP 扩展到服务器。

customData

数组。获取随生成的报告一起发送的自定义数据集合。使用 customData 属性将附加信息附加到生成的报告上。例如,您可以使用此属性来跟踪与您的应用程序相关的其他重要指标:CPU 使用率、环境参数等。

    $customData = array('CustomerName' => 'Mary');
    $client->customData = $customData;

tags

数组。获取指定从原始报告中提取的附加字段的标签集合,这些字段将用于自动忽略、过滤或检测重复。键是一个标签名称(由 a-z、A-Z、0-9 和 _ 字符组成的字符串),值是一个保存到报告中的标签值。新标签添加时启用 允许搜索

    $tags = array('OS' => 'Win8');
    $client->tags = $tags;

忽略变量

指定用于启用 $GLOBALS 系统值收集的配置值。

注意:在收集 $GLOBALS 系统值之前,请确保其中没有存储个人或私有数据(密码、登录信息等)。如果是这样,请使用 ignoreKeyPattern 属性来排除所需键的值。

    $client->ignoreKeyPattern = '([pP][aA][sS][sS][wW][oO][rR][dD])';
    $client->ignoreGetBody = true;
    $client->ignorePostBody = true;
    $client->ignoreCookies = true;
    $client->ignoreFilesBody = true;
    $client->ignoreEnvironmentBody = true;
    $client->ignoreRequestBody = true;
    $client->ignoreServerVariables = true;
    $client->ignoreKeyPattern = '([pP][aA][sS][sS][wW][oO][rR][dD])';

一个正则表达式,用于从收集 $GLOBALS 系统值中排除个人或私有数据(密码、登录信息等)。默认值为 NULL - 收集所有系统值。

    $client->ignoreGetBody = true;

布尔值。默认值为 false。指定是否收集和发送 $_GET 数组的数据到服务器。

    $client->ignorePostBody = true;

布尔值。默认值为 false。指定是否收集和发送 $_POST 数组的数据到服务器。

    $client->ignoreCookies = true;

布尔值。默认值为 false。指定是否收集和发送 $_COOKIE 数组的数据到服务器。

    $client->ignoreFilesBody = true;

布尔值。默认值为 false。指定是否收集和发送 $_FILES 数组的数据到服务器。

    $client->ignoreEnvironmentBody = true;

布尔值。默认值为 false。指定是否收集和发送 $_ENV 数组的数据到服务器。

    $client->ignoreRequestBody = true;

布尔值。默认值为 false。指定是否收集和发送 $_REQUEST 数组的数据到服务器。

    $client->ignoreServerVariables = true;

布尔值。默认值为 false。指定是否收集和发送 $_SERVER 数组的数据到服务器。

offlineReportsCount

    $client->offlineReportsCount = 20;

整数。指定在断开互联网连接后保留多少个之前的报告。只有在将 OfflineReportsEnabled 属性设置为 *true 时,才会保存报告。

    $client->offlineReportsEnabled = true;
    $client->offlineReportsCount = 20;

offlineReportsDirectory

    $client->offlineReportsDirectory = '<directory-for-offline-reports>';

字符串。指定在断开互联网连接后存储报告的目录路径。只有在将 OfflineReportsEnabled 属性设置为 true 时,才会保存报告。

    $client->offlineReportsEnabled = true;
    $client->offlineReportsDirectory = '<directory-for-offline-reports>';

offlineReportsEnabled

    $client->offlineReportsEnabled = true;

布尔值。默认值是 false。指定当网络连接丢失时,Logify 是否应存储最后 offlineReportsCount 个报告。当网络连接可用时,通过调用 send_offline_reports 方法发送保留的报告。

    $client->offlineReportsEnabled = true;
    $client->offlineReportsCount = 20; // Keeps the last 20 reports
    $client->offlineReportsDirectory = "<directory-for-offline-reports>";

pathToConfigFile

字符串。指定配置文件路径。有关配置文件结构的更多信息,请参阅上面的配置部分。

    $client->pathToConfigFile = '/config.php';

userId

字符串。指定与发送的报告相对应的唯一用户标识符。

    $client->userId = "user@myapp.com";

静态方法

get_instance

返回 LogifyAlert 类的单例。

    $client = LogifyAlertClient::get_instance();

自动报告方法

Logify Alert 允许您使用以下方法监听未捕获的异常并自动发送崩溃报告。

start_exceptions_handling()

指示 Logify Alert 开始监听未捕获的异常,并发送所有处理的异常的报告。

    $client->start_exceptions_handling();

stop_exceptions_handling()

指示 Logify Alert 停止监听未捕获的异常。

    $client->stop_exceptions_handling();

手动报告方法

此外,Logify Alert 允许您手动捕获所需的异常,根据捕获的异常生成报告,并仅发送这些报告。为此,请使用以下方法。

send(Exception $ex)

根据捕获的异常生成崩溃报告,并将此报告发送到 Logify Alert 服务。

try {
    RunCode();
}
catch (Exception $ex) {
    $client->send($ex);
}

send(Exception $ex, $customData)

将指定的自定义数据与捕获的异常一起发送到 Logify Alert 服务。

try {
    RunCode();
}
catch (Exception $ex) {
    $customdata = array('FailedOperation' => 'RunCode');
    $client->send($ex, $customdata);
}

send(Exception $ex, $customData, $attachments)

将指定的自定义数据和附件与捕获的异常一起发送到 Logify Alert 服务。

use DevExpress\Logify\Core\Attachment;

    try {
        RunCode();
    }
    catch (Exception $ex) {
        $customdata = array('FailedOperation' => 'RunCode');
  
        $attachment = new Attachment();
        $attachment->name = "My attachment's unique name per one report";
        $attachment->content = file_get_contents('C:\Work\Image_to_attach.jpg');

        // We strongly recommend that you specify the attachment type.
        $attachment->mimeType = 'image/jpeg';
        $attachments = array($attachment);

        $client->send($ex, $customdata, $attachments);
    }

send_offline_reports()

将 offlineReportsDirectory 文件夹中保存的所有报告发送到 Logify Alert 服务。

面包屑收集方法

breadcrumbs->add($message)

将带有指定消息的面包屑添加到面包屑集合中。默认参数值是一个空字符串 ($message = "")。

use DevExpress\Logify\LogifyAlertClient;

    $client = LogifyAlertClient::get_instance();

    $client->breadcrumbs->add("A breadcrumb message.");

breadcrumbs->add($message, $category)

将带有指定消息和类别的面包屑添加到面包屑集合中。默认类别是一个空字符串 ($category = "")。

use DevExpress\Logify\LogifyAlertClient;

    $client = LogifyAlertClient::get_instance();

    $client->breadcrumbs->add("A breadcrumb message.", "debug_category");

breadcrumbs->add($message, $category, $dateTime)

向面包屑集合添加具有指定消息、类别和日期/时间的面包屑。默认日期/时间为UTC($dateTime = date_create('UTC')->format('Y-m-d H:i:s'))。

use DevExpress\Logify\LogifyAlertClient;

    $client = LogifyAlertClient::get_instance();

    $client->breadcrumbs->add("A breadcrumb message.", "debug_category", date("c"));

breadcrumbs->add($message, $category, $dateTime, $level)

向面包屑集合添加具有指定消息、类别、日期/时间和级别的面包屑。默认级别是Info($level = BreadcrumbLevel::Info)。

use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\BreadcrumbLevel;

    $client = LogifyAlertClient::get_instance();

    $client->breadcrumbs->add("A breadcrumb message.", "debug_category", date("c"), BreadcrumbLevel::Debug);

breadcrumbs->add($message, $category, $dateTime, $level, $event)

向面包屑集合添加新的面包屑。默认事件是Manual($event = "manual")。

use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\BreadcrumbLevel;

    $client = LogifyAlertClient::get_instance();

    $client->breadcrumbs->add("A breadcrumb message.", "debug_category", date("c"), BreadcrumbLevel::Debug, "MyEvent");

breadcrumbs->add($message, $category, $dateTime, $level, $event, $className)

向面包屑集合添加新的面包屑。默认类名为空字符串($className = "")。

use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\BreadcrumbLevel;

    $client = LogifyAlertClient::get_instance();

    $client->breadcrumbs->add("A breadcrumb message.", "debug_category", date("c"), BreadcrumbLevel::Debug, "MyEvent", "MyClass");

breadcrumbs->add($message, $category, $dateTime, $level, $event, $className, $methodName)

向面包屑集合添加新的面包屑。默认方法名为空字符串($methodName = "")。

use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\BreadcrumbLevel;

    $client = LogifyAlertClient::get_instance();

    $client->breadcrumbs->add("A breadcrumb message.", "debug_category", date("c"), BreadcrumbLevel::Debug, "MyEvent", "MyClass", "MyMethod");

breadcrumbs->add($message, $category, $dateTime, $level, $event, $className, $methodName, $line)

向面包屑集合添加新的面包屑。默认行号为0($line = 0)。

use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\BreadcrumbLevel;

    $client = LogifyAlertClient::get_instance();

    $client->breadcrumbs->add("breadcrumb message", "debug_category", date("c"), BreadcrumbLevel::Debug, "MyEvent", "MyClass", "MyMethod", 10);

breadcrumbs->add($message, $category, $dateTime, $level, $event, $className, $methodName, $line, $customData)

向面包屑集合添加新的面包屑。默认自定义数据为空($customData = null)。

use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\BreadcrumbLevel;

    $client = LogifyAlertClient::get_instance();

    $customData = array('breadcrumb1' => 'breadcrumbData1', 'breadcrumb2' => 'breadcrumbData2');

    $client->breadcrumbs->add("A breadcrumb message.", "debug_category", date("c"), BreadcrumbLevel::Debug, "MyEvent", "MyClass", "MyMethod", 10, $customData);

breadcrumbs->get()

获取所有收集到的面包屑。

use DevExpress\Logify\LogifyAlertClient;

    $client = LogifyAlertClient::get_instance();

    $breadcrumbs = $client->breadcrumbs->get();

breadcrumbs->clear()

清除收集到的面包屑。

use DevExpress\Logify\LogifyAlertClient;

    $client = LogifyAlertClient::get_instance();

    $client->breadcrumbs->clear();

回调

set_can_report_exception_callback(callable $canReportExceptionHandler)

在生成新的崩溃报告和调用$beforeReportExceptionHandler之间发生。

set_can_report_exception_callback事件在生成新报告并准备好发送到Logify Alert服务后立即发生。通过从您的函数中返回false来处理此事件,以取消发送报告。因此,生成的报告不会发送到服务,并且不会引发*set_before_report_exception_callback

use DevExpress\Logify\LogifyAlertClient;

    $client = LogifyAlertClient::get_instance();
    $client->start_exceptions_handling();
    $client->set_can_report_exception_callback('can_report_exception');

    function can_report_exception($exception){
        if($exception instanceof Error){
            return false;
        }
        return true;
    }

set_before_report_exception_callback(callable $beforeReportExceptionHandler)

在Logify Alert将新的崩溃报告发送到服务之前发生。

set_can_report_exception_callback 事件和向 Logify Alert 服务发送新报告之间,会发生 set_before_report_exception_callback 事件。如果在 set_can_report_exception_callback 事件的处理程序中取消发送报告,则不会发送报告,并且不会触发 set_before_report_exception_callback 事件。使用 set_can_report_exception_callback 事件的处理程序,通过将所需数据分配给 customDataattachments 属性,可以向发送的报告添加自定义数据或附件。

use DevExpress\Logify\LogifyAlertClient;
use DevExpress\Logify\Core\Attachment;

    $client->set_before_report_exception_callback('before_report_exception');
 
    function before_report_exception(){
        $client = LogifyAlertClient::get_instance();
 
        $attachment = new Attachment();
        $attachment->name = 'My attachment's unique name per one report';
        $attachment->mimeType = 'image/jpeg';
        $attachment->content = file_get_contents(''C:\Work\Image_to_attach.jpg'');;
    
        $client->attachments = array($attachment);
 
        $client->customData = array('CustomerName' => 'Mary');
    }

set_after_report_exception_callback(callable $afterReportExceptionHandler)

在 Logify Alert 向服务发送新的崩溃报告后发生。如果报告已成功发送,$afterReportExceptionHandler 的 $response 参数为 true。否则,$response 参数包含发送过程中发生的错误消息。

use DevExpress\Logify\LogifyAlertClient;

    $client = LogifyAlertClient::get_instance();
    $client->start_exceptions_handling();
    $client->set_after_report_exception_callback('after_report_exception');

    function after_report_exception($response){
        if($response !== true){
            echo $response.'<br />';
        }
    }

自定义客户端

如果描述的客户端不适合,您可以创建一个自定义客户端。有关更多信息,请参阅 自定义客户端 文档。