PHPでMonologを利用してRollbarにメッセージを送信
Monologを利用してRollbarにメッセージを送信する方法です
ちなみにRollbarとはエラーをモニタリングしてくれるサービスです。(NewRericと類似サービス)
まずはcomposerを使用してrollbarのクライアントをインストールします。
./composer.json "require": { ~略~ "rollbar/rollbar": "~1.1" },
rollbarにアカウントを作成して、access_tokenを取得した上で、以下のように設定するとメッセージをRollbarに送信する事ができるようになります。
<?php use Rollbar\Rollbar; use Rollbar\Payload\Level; Rollbar::init([ 'access_token' => 'xxxxxx', 'environment' => 'dev', ]); Rollbar::log(Level::info(), 'testing info level'); try { throw new \Exception('test exception'); } catch (\Exception $e) { Rollbar::log(Level::error(), $e); }
次はMonologを利用しようとしてHandlerの一覧を眺めていた所、RollbarHandlerというHandlerが存在したので、これを利用すればすぐ実装できると考えました。
monolog/RollbarHandler.php at master · Seldaek/monolog · GitHub
しかし、RollbarHandlerを参照するとコンストラクタにRollbarNotifierが必要とされます。
RollbarNotifierとは何ぞや・・・とソースをgrepしてもどこにもそんなクラスは存在しません。
更に調べてみると、どうやら古いバージョンのRollbarクライアントには存在したけどここ最近のバージョンからは削除されているようです。
という事でissueに書いてある通り、RollbarLoggerを使う事にします。
use Rollbar\Rollbar; use Monolog\Logger; Rollbar::init([ 'access_token' => 'xxx', 'environment' => 'dev', ]); $logger = new Logger('test!'); $psrHandler = new \Monolog\Handler\PsrHandler(Rollbar::logger()); $logger->pushHandler($psrHandler); $logger->info('test info'); $logger->error('test error'); $logger->crit('test crit');
これでMonologを利用してRollbarにメッセージを送信できるようになりました。
ちなみにalertとnoticeはRollbarにレベルとして存在しないのでエラーとなりますのでご注意です。