muscula/muscula-php-logger

用于将错误发送到Muscula监控系统的PHP库

dev-master 2023-03-08 13:03 UTC

This package is auto-updated.

Last update: 2024-09-08 15:13:45 UTC


README

Muscula PHP Logger 允许您将所有PHP错误发送到Muscula服务。代码完全基于优秀的PHP Console库 https://github.com/barbushin/muscula

要求

  • PHP 5.4(或更高版本)

安装

Composer

{
	"require": {
		"muscula/muscula-php-logger": "^1.0"
	}
}

或者

$ composer require muscula/muscula-php-logger

用法

连接器

存在一个Muscula\Connector类,它初始化PHP服务器和Musucla系统之间的连接。当初始化Muscula\Connector实例时,将初始化连接。

$connector = Muscula\Connector::getInstance();
$connector->logId = 'LOG_ID';

当您调用Muscula\Handler::getInstance()Muscula\Helper::register()时,它也会被初始化。

处理错误

存在一个Muscula\Handler类,它初始化PHP错误和异常处理程序,并提供以下功能:

  • 处理PHP错误(+致命错误和内存限制错误)和异常。
  • 忽略重复错误。
  • 调用先前定义的错误和异常处理程序。
  • 使用$handler->handleException($exception)处理捕获的异常。
  • 使用$handler->debug($var, $someObj)调试变量。

在主项目脚本顶部初始化Muscula\Handler

$handler = Muscula\Handler::getInstance();
/* You can override default Handler behavior:
	$handler->setHandleErrors(false);  // disable errors handling
	$handler->setHandleExceptions(false); // disable exceptions handling
	$handler->setCallOldHandlers(false); // disable passing errors & exceptions to prviously defined handlers
*/
$handler->start($logId); // initialize handlers, provide logId

结构化日志

Muscula有一个多功能且智能的变量转储器,允许您:

  • 转储任何类型的变量。
  • 转储受保护的私有对象的属性。
  • 通过级别、项目数、项目大小和总大小限制转储(请参阅$connector->getDumper())。
  • 转储对象类名。
  • 智能转储回调和Closure。
  • 检测转储调用源和跟踪(调用$connector->getDebugDispatcher()->detectTraceAndSource = true)。

如何调用

最长的本地调试方法调用

$someObj = (object)['car' => 'suv','engine' => 'v8'];
Muscula\Connector::getInstance()->getDebugDispatcher()->dispatchDebug($var, $someObj);

较短的从处理程序调用调试

$someObj = (object)['car' => 'suv','engine' => 'v8'];
Muscula\Handler::getInstance()->debug($var, $someObj);

最短使用全局M类调用调试

Muscula\Helper::register(); // it will register global M class
// ...
$someObj = (object)['car' => 'suv','engine' => 'v8'];
M::debug($var, $someObj);
M::tag($var);

自定义使用用户定义的函数调用调试

function d($var, $structuralData = null) {
	Muscula\Connector::getInstance()->getDebugDispatcher()->dispatchDebug($var, $structuralData, 1);
}\
$someObj = (object)['car' => 'suv','engine' => 'v8'];
d($var, $someObj);

配置

$connector = Muscula\Connector::getInstance();
$connector->logId = 'LOG_ID';

// Configure eval provider
$evalProvider = $connector->getEvalDispatcher()->getEvalProvider();
$evalProvider->addSharedVar('post', $_POST); // so "return $post" code will return $_POST
$evalProvider->setOpenBaseDirs(array(__DIR__)); // see https://php.ac.cn/open-basedir

$connector->startEvalRequestsListener(); // must be called in the end of all configurations

PSR-3日志实现

存在Muscula的PSR-3接口实现PSR-3,以集成Muscula与PSR-3兼容的日志记录器(例如 Monolog)。请参阅Muscula\PsrLogger