muscula / muscula-php-logger
用于将错误发送到Muscula监控系统的PHP库
dev-master
2023-03-08 13:03 UTC
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^7.5.0
Requires (Dev)
- ext-mbstring: *
- psr/log: ^1.1.4
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。