SentryでLaravelのログを見られるようにしてみます。この設定をLaravel Forgeで簡単にできるそうです。とりあえずSentryにアカウント登録しまして、そのアカウントをForgeのアカウント設定でリンクすることができます。そうすると、各サイトでSentryの設定ができるようになるようです。
Forgeのサイト設定を確認
サイト設定のSentryというメニューにアクセスすると、下記のようになっていました。環境変数設定やインストール・設定などのコード側の作業の説明のようです。これをやればSentryのログが送信されるのでしょう。お手軽でよいですね。
ここにも詳しい解説がありました。
ちなみに、もうSentry側でもこのような画面が誕生しておりました。
ライブラリのインストール
> composer require sentry/sentry-laravel
bootstrap/app.phpの修正
<?php use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; use Sentry\Laravel\Integration; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { // }) ->withExceptions(function (Exceptions $exceptions) { Integration::handles($exceptions); })->create();
sentry:publishの実行
> php artisan sentry:publish --dsn=https://xxxxxxxxxxxxxxxxxxx
config/sentry.phpが作成されました。 あと、sentryのJavascript SDKもインストールされました。 JSでSentryにログを飛ばせるのでしょうか?
環境変数の設定
SENTRY_LARAVEL_DSN=https://xxxxxxxxxxxxxxxxxx
上記は、先程のJavascript SDKインストール時に自動で追加された環境変数に含まれていました。自動で下記が追加されていました。
SENTRY_LARAVEL_DSN=https://xxxxxxxxxxxxxxxxxx SENTRY_TRACES_SAMPLE_RATE=1.0 VITE_SENTRY_DSN_PUBLIC="${SENTRY_LARAVEL_DSN}"
Sentryの動作確認
> php artisan sentry:test
ローカル環境
ローカル環境でエラーログをSentryに飛ばしたくない場合は、下記のようにする。
SENTRY_LARAVEL_DSN=null
トレースとは??
実際には下記設定はまずいらしい。
SENTRY_TRACES_SAMPLE_RATE=1.0
トレースというのはエラー時のコード実行ステップを細かく記録すること、って感じ?あるいはステップ自体もトレースといいますかね?? まあ何しろそういうことで、1.0というのは100%ということで、可能な限り全部のトレースを記録しようとするので、すぐいっぱいになっちゃうらしい。時間当たりの保存量の上限的なやつでしょうかね。。 こういうのは気を付けないと、大事なログが保存出来ていませんでしたとか、コストが想定より高くなってました、みたいなことになりうるので、気を付けたいと思います。 まあまだ、Sentryの料金表すら見ていませんが。
最適な数値がよく分かりませんが、ChatGPT曰く0.1とかによくするらしいので、とりあえず0.1にしておきたいと思います。