使用 Monolog Logger 将输出发送到 Sentry
Use Monolog Logger to send output to Sentry
我目前有 php 设置来使用 Monolog 将其错误消息、异常...写入 stderr,我想添加一个额外的处理程序以将输出直接发送到 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;
它正确地将所有内容输出到标准错误,但我没有在哨兵中收到任何事件。
有谁知道我的脚本可能有什么问题吗?
当你捕捉到一个异常时,你可以调用它来手动将它发送到 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);
我目前有 php 设置来使用 Monolog 将其错误消息、异常...写入 stderr,我想添加一个额外的处理程序以将输出直接发送到 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;
它正确地将所有内容输出到标准错误,但我没有在哨兵中收到任何事件。 有谁知道我的脚本可能有什么问题吗?
当你捕捉到一个异常时,你可以调用它来手动将它发送到 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);