devexpress / logify.alert.php
Logify Alert PHP应用程序客户端
Requires
- php: >=5.4.0
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 事件的处理程序,通过将所需数据分配给 customData 或 attachments 属性,可以向发送的报告添加自定义数据或附件。
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 />'; } }
自定义客户端
如果描述的客户端不适合,您可以创建一个自定义客户端。有关更多信息,请参阅 自定义客户端 文档。