Search code examples
phplogginghandlersentrymonolog

Use Monolog Logger to send output to Sentry


I currently have php setup to write its error messages, exceptions, ... to stderr using Monolog and I wanted to add an additional Handler to send the output directly to Sentry.

This is what I have in 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;

It outputs everything correctly to stderr, but I do not receive any events in sentry. Does anyone know what might be wrong with my script?


Solution

  • I found the solution to my problem. Even though I copied it directly from sentry, my DSN key was wrong.

    I removed the extra '/' here:

    Wrong:

    http://KEY@URL//PROJECTID

    Correct:

    http://KEY@URL/PROJECTID

    Kind of a stupid mistake, but thanks for the help anyway guys.