如何解决在Sentry中查看时,错误对象变为xdebug_message
我目前设置了2个Monolog处理程序。
一个将错误/异常重定向到stderr
,另一个将其发送到Sentry。
$pimple[Logger::class] = function (ContainerInterface $container): Logger {
$monologLogger = new Logger('logger');
#Stream Logs to stderr
$streamHandler = new StreamHandler('PHP://stderr');
#Send Logs to Sentry
\Sentry\init(
[
'dsn' => 'http://key@url/project_id','default_integrations' => false
]);
$sentryHandler = new Handler(SentrySdk::getCurrentHub(),Logger::NOTICE);
$jsonFormatter = new JsonFormatter();
$streamHandler->setFormatter($jsonFormatter);
$sentryHandler->setFormatter($jsonFormatter);
$monologLogger->pushProcessor(function ($record) {
if (isset($record['context']['error']) && is_array($record['context'])) {
foreach ($record['context'] as $key => $value) {
if ($key === 'tags') {
//Handled natively by Sentry monolog handler
continue;
}
$record['context']['extra'][$key] = is_string($value) && json_decode($value) !== null ? json_decode($value) : $value;
}
}
return $record;
});
$monologLogger->pushHandler($streamHandler);
$monologLogger->pushHandler($sentryHandler);
return $monologLogger;
};
我的问题是,在查看stderr时,错误上下文看起来像这样,这正是我想要的样子,因为它可以告诉我准确地识别错误所需的知识。
"error":{"class":"Error","message":"Call to undefined function Presentation\\Web\\Action\\Nodes\\div()","code":0,"file":"/Presentation/Web/Action/Nodes/GetNodesAction.PHP:19"}
但这就是它们出现在Sentry中的方式,这使得很难正确阅读它。
"error":{ xdebug_message:
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Error: Call to undefined function Presentation\Web\Action\Nodes\div() in /Presentation/Web/Action/Nodes/GetNodesAction.PHP on line <i>19</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0009</td><td bgcolor='#eeeeec' align='right'>471848</td><td bgcolor='#eeeeec'>{main}( )</td><td title='/app/test/web/index.PHP' bgcolor='#eeeeec'>.../index.PHP<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0060</td><td bgcolor='#eeeeec' align='right'>472120</td><td bgcolor='#eeeeec'>require( <font color='#00bb00'>'/app/web/index.PHP'</font> )</td><td title='/app/test/web/index.PHP' bgcolor='#eeeeec'>.../index.PHP<b>:</b>14</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.6470</td><td bgcolor='#eeeeec' align='right'>1460136</td><td bgcolor='#eeeeec'>Slim\App->run( )</td><td title='/app/web/index.PHP' bgcolor='#eeeeec'>.../index.PHP<b>:</b>9</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>4</td><td bgcolor='#eeeeec' align='center'>0.7036</td><td bgcolor='#eeeeec' align='right'>1609552</td><td bgcolor='#eeeeec'>Slim\App->process( )</td><td title='/app/vendor/slim/slim/Slim/App.PHP' bgcolor='#eeeeec'>.../App.PHP<b>:</b>297</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>5</td><td bgcolor='#eeeeec' align='center'>0.7511</td><td bgcolor='#eeeeec' align='right'>1740704</td><td bgcolor='#eeeeec'>Slim\App->callMiddlewareStack( )</td><td title='/app/vendor/slim/slim/Slim/App.PHP' bgcolor='#eeeeec'>.../App.PHP<b>:</b>392</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>6</td><td bgcolor='#eeeeec' align='center'>0.7511</td><td bgcolor='#eeeeec' align='right'>1740704</td><td bgcolor='#eeeeec'>Slim\App->Slim\{closure:/app/vendor/slim/slim/Slim/MiddlewareAwareTrait.PHP:63-78}( )</td><td title='/app/vendor/slim/slim/Slim/MiddlewareAwareTrait.PHP' bgcolor='#eeeeec'>.../MiddlewareAwareTrait.PHP<b>:</b>117</td></tr>
... rest of the output omitted ...
有人知道我如何确保对象不变吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。