Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 283
patrick.barbosa.3979 Avatar asked Nov 05 '25 14:11

patrick.barbosa.3979


2 Answers

Maybe your problem is dsn. But I used the easiest way in the project You can find a more efficient way

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);

enter image description here

like image 158
dinobi Avatar answered Nov 08 '25 13:11

dinobi


When you catch an exception you can call this to manually send it to Sentry

Sentry\captureException($e);
like image 27
BornSupercharged Avatar answered Nov 08 '25 14:11

BornSupercharged