Sentry ドキュメント
pieceofcake2/sentry は、CakePHP 2 アプリケーションのエラーとキャッチされなかった例外を、 Sentry PHP SDK を使って Sentry に報告します。 CakePHP の ErrorHandler を継承した SentryErrorHandler を提供します。エラーと例外はこれまでどおり CakePHP が ログに記録して表示し、さらに Sentry にも送信されます。
インストール
Composer でプラグインをインストールします。
composer require pieceofcake2/sentryこのプラグインは cakephp-plugin タイプなので、composer/installers によってプラグインのディレクトリに インストールされます。正しい場所にインストールされるように、アプリケーションの composer.json で installer-paths を設定してください。
| 構成 | installer-paths |
|---|---|
モダン (config/、src/、templates/、plugins/) | "plugins/{$name}/": ["type:cakephp-plugin"] |
レガシー (app/Config/、app/Plugin/) | "app/Plugin/{$name}/": ["type:cakephp-plugin"] |
プラグインは config/bootstrap.php (レガシー構成では app/Config/bootstrap.php) で読み込みます。 すでに CakePlugin::loadAll() を使っている場合は必要ありません。
CakePlugin::load('Sentry');設定
config/core.php (レガシー構成では app/Config/core.php) でプラグインを設定し、SentryErrorHandler を エラーハンドラーと例外ハンドラーとして登録します。
Configure::write('Sentry', [
'dsn' => 'SENTRY_DSN',
'options' => [
'environment' => 'SENTRY_ENVIRONMENT',
'release' => 'SENTRY_RELEASE',
],
'ignoredExceptions' => [
NotFoundException::class,
MissingControllerException::class,
MissingActionException::class,
],
]);
App::uses('SentryErrorHandler', 'Sentry.Lib/Error');Configure::write('Error', [
'handler' => 'SentryErrorHandler::handleError',
'level' => E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED,
'trace' => true,
]);Configure::write('Exception', [
'handler' => 'SentryErrorHandler::handleException',
'renderer' => 'ExceptionRenderer',
'log' => true,
]);CakePHP は bootstrap.php を読み込んだ後でハンドラーを登録するので、そこでプラグインを読み込んでいればクラスが見つかります。
| キー | 説明 |
|---|---|
Sentry.dsn | Sentry プロジェクトの DSN。 |
Sentry.options | environment、release、sample_rate など、Sentry\init() に渡すオプション。dsn には Sentry.dsn の値が設定されます。 |
Sentry.ignoredExceptions | Sentry に送信しない例外クラス。サブクラスも無視されます。これらの例外も CakePHP では引き続き処理されます。 |
報告される内容
Sentry SDK は、最初のエラーまたは例外を処理するときに初期化されます。
- エラー (warning、notice など) は CakePHP の
ErrorHandler::handleError()に渡され、そのレベルがerror_reporting()に含まれていればErrorExceptionとして Sentry に送信されます。 - キャッチされなかった例外 は CakePHP の
ErrorHandler::handleException()に渡され、Sentry.ignoredExceptionsのいずれかのインスタンスでなければ Sentry に送信されます。 - 致命的なエラー (
E_ERROR、E_PARSE、E_CORE_ERRORとE_COMPILE_ERROR) は、リクエストの終了時に CakePHP が エラーハンドラーに渡し、他のエラーと同じように報告されます。
由来
このパッケージは pieceofcake2 が作成し、メンテナンスしています。 他のプロジェクトのフォークではなく、他のプロジェクトをもとにしたものでもありません。
