Symfony
Symfony is a set of reusable PHP components and a PHP framework to build web applications and services. Learn how to set it up with Sentry.
Symfony is supported via the sentry-symfony package as a native bundle.
Install the sentry/sentry-symfony bundle:
composer require sentry/sentry-symfony
Add your DSN to your .env file:
.env###> sentry/sentry-symfony ###
SENTRY_DSN="https://examplePublicKey@o0.ingest.sentry.io/0"
###< sentry/sentry-symfony ###
If you are using Monolog to report events instead of the typical error listener approach, you need this additional configuration to log the errors correctly:
config/packages/sentry.yamlsentry:
  register_error_listener: false # Disables the ErrorListener to avoid duplicated log in sentry
  register_error_handler: false # Disables the ErrorListener, ExceptionListener and FatalErrorListener integrations of the base PHP SDK
monolog:
  handlers:
    sentry:
      type: sentry
      level: !php/const Monolog\Logger::ERROR
      hub_id: Sentry\State\HubInterface
      fill_extra_context: true # Enables sending monolog context to Sentry
Additionally, you can register the PsrLogMessageProcessor to resolve PSR-3 placeholders in reported messages:
config/packages/sentry.yamlservices:
  Monolog\Processor\PsrLogMessageProcessor:
    tags: { name: monolog.processor, handler: sentry }
To test that both logger error and exception are correctly sent to sentry.io, you can create the following controller:
<?php
namespace App\Controller;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class SentryTestController extends AbstractController
{
    /**
     * @var LoggerInterface
     */
    private $logger;
    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }
    /**
     * @Route(name="sentry_test", path="/_sentry-test")
     */
    public function testLog()
    {
        // the following code will test if monolog integration logs to sentry
        $this->logger->error('My custom logged error.', ['some' => 'Context Data']);
        // the following code will test if an uncaught exception logs to sentry
        throw new \RuntimeException('Example exception.');
    }
}
After you visit the /_sentry-test page, you can view and resolve the recorded error by logging into sentry.io and opening your project. Clicking on the error's title will open a page where you can see detailed information and mark it as resolved.
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").