У меня есть простая консольная программа:
namespace MyApp\Console;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
class MaConsole extends Command {
protected function configure()
{
$this->setDescription('Console\'s not console');
}
protected function execute(
\Symfony\Component\Console\Input\InputInterface $input,
\Symfony\Component\Console\Output\OutputInterface $output
) {
$output->writeln('Doing Stuff');
}
}
И загружаю вот так:
namespace MyApp;
use Symfony\Component\Console\Application as SymfonyApplication;
use MyApp\Console\MaConsole;
class Application extends SymfonyApplication
{
public function __construct(
string $name = 'staff',
string $version = '0.0.1'
) {
parent::__construct($name, $version);
throw new \Exception('Test Sentry on Playground');
$this->add(new MaConsole());
}
}
И я хочу зарегистрировать исключение, указанное выше в службе Sentry. Итак, моя точка входа:
use MyApp\Application;
require __DIR__ . '/vendor/autoload.php';
Sentry\init([
'dsn' => getenv('SENTRY_DSN'),
'environment' => getenv('ENVIRONMENT')
]);
$application = (new Application())->run();
Но мне не удается зарегистрировать ошибку в часовом, даже если я установил правильные переменные среды.
Приложение не загружает фреймворк Full Symfony, но вместо этого использует только консольные компоненты, поэтому я понятия не имею, следует ли мне использовать интеграцию Sentry Symfony: https://docs.sentry.io/platforms/php/symfony/
Причина в том, что я не знаю, как в моем случае загрузить пакет, поэтому я использую SDK.
Изменить 1:
Я также попытался поймать исключение и вручную зарегистрировать его, но по какой-то причине тоже не регистрируется:
use MyApp\Application;
require __DIR__ . '/vendor/autoload.php';
try {
Sentry\init([
'dsn' => getenv('SENTRY_DSN'),
'environment' => getenv('ENVIRONMENT')
]);
throw new \Exception('Test Sentry on Playground');
$application = (new Application())->run();
} catch(Exception $e) {
Sentry\captureException($e);
}