如何解决使用Monolog记录器将输出发送到Sentry
我目前具有PHP设置,可使用Monolog将其错误消息,异常等信息写入stderr,我想添加一个附加的Handler,以将输出直接发送到Sentry。
这就是我在PHP中所拥有的:
$monologLogger = new Logger('logger');
$streamHandler = new StreamHandler('PHP://stderr');
$formatter = new JsonFormatter();
$options = [
'dsn' => 'http://KEY@URL//PROJECTID','default_integrations' => false,// use Monolog to send errors
];
\Sentry\init($options);
$sentryHandler = new Handler(SentrySdk::getCurrentHub(),Logger::ERROR);
$sentryHandler->setFormatter($formatter);
$monologLogger->pushHandler($sentryHandler);
$streamHandler->setFormatter($formatter);
$monologLogger->pushHandler($streamHandler);
return $monologLogger;
它将所有内容正确输出到stderr,但是我在哨兵中未收到任何事件。 有人知道我的脚本可能出什么问题吗?
解决方法
当您发现异常时,可以调用此方法将其手动发送给Sentry
Sentry\captureException($e);
,
使用try catch
块获取异常
之后,您可以致电哨兵
Sentry\captureException($e);
我找到了解决问题的方法。即使我直接从哨兵那里复制了它,我的DSN密钥也是错误的。
我在此处删除了多余的'/':
错误:
http:// KEY @ URL // PROJECTID
正确:
http:// KEY @ URL / PROJECTID
有一个愚蠢的错误,但是还是谢谢大家的帮助。
,也许您的问题是dsn
。
但是我在项目中使用了最简单的方式
你可以找到更有效的方法
see here more #sentry integrations
$logger = new \Monolog\Logger('name');
$client = \Sentry\ClientBuilder::create([
'dsn' => DSN
])->getClient();
$handler = new \Sentry\Monolog\Handler(
new \Sentry\State\Hub($client)
);
$logger->pushHandler($handler);
$logger->info('Message',$context);
$logger->error('Message',$context);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。