簡體   English   中英

使用 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;

它將所有內容正確輸出到 stderr,但我在哨兵中沒有收到任何事件。 有誰知道我的腳本可能有什么問題?

當您捕獲異常時,您可以調用它以手動將其發送給 Sentry

Sentry\captureException($e);

使用try catch塊獲取異常,然后可以調用 Sentry

Sentry\\captureException($e);

我找到了解決我的問題的方法。 即使我直接從 sentry 復制它,我的 DSN 密鑰也是錯誤的。

我在這里刪除了額外的“/”:

錯誤的:

http://KEY@URL//PROJECTID

正確的:

http://KEY@URL/PROJECTID

有點愚蠢的錯誤,但無論如何感謝您的幫助。

也許你的問題是dsn 但是我在項目中使用了最簡單的方法 可以找到更高效的方法

在這里查看更多#sentry 集成

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

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM