[Laravel] ユーザーのアクセスログを保存する
アプリケーションへアクセスしたユーザーのアクセスログは何かと役に立つので取っておきたいと思う人が多いと思います。 Laravelには認証系のイベントが用意されており、ログインしているユーザーからのリクエストがあった場合にイベントが発火されます。このイベントを購読することで、アクセスログの取得が可能です。 保存先には色々考えられますが、オンラインのログサービスのへ保存する方法を紹介します。本来の利用方法とは異なるかもしれませんが、とても利便性の高いログ情報を取得することができます。 データベース等、保存先を変更する場合でもリスナーを変更すれば同じような動作が可能です。 パッケージの導入 Composerでをインストールします。 パッケージの詳細についてはGitHub - xzxzyzyz/laravel-logging-rollbar: Rollbar for Laravel Loggingを参照してください。 Rollbarの準備 のアカウントをお持ちでない場合は以下からサインアップしてください。無料プランも用意されており、5,000件/月まで利用できます。 Rollbar で任意のプロジェクトを作成しましょう。 laravel-access-log-to-rollbar01 作成が完了するとプロジェクトへのアクセストークンが発行されます。 laravel-access-log-to-rollbar02 Laravel側で利用するのはなので、この情報をファイルへ追記します。 へのchannelを追加することで、への 通知をLaravelのログとして利用できるようになります。 アクセスログを保存するリスナーの作成 以下の用なイベントのリスナーを作成しましょう。 今回はログのラベルとしてアクセスのあったURLを利用します。 作成したリスナーをへ登録します。 以上でアクセスログをへ保存する準備ができました。 次に実際にログを送信してみます。 アクセスログの確認 migrationを実行してユーザー情報の入れ物を用意しておきます。 認証周りを有効にしておきます。 へアクセスしてユーザー登録を行うのと同じですが、を利用してユーザーを作成します。 へアクセスして作成したユーザーでログインした後、へアクセスしてログを確認してみましょう。 laravel-access-log-to-rollbar03 でユーザー毎のログを確認できます。 laravel-access-log-to-rollbar04 ではユーザーのリクエスト値やサーバー情報、SESSION情報、利用ブラウザ等の様々なデータが格納でき、柔軟な検索が可能です。 とても便利なサービスですので、この機会に是非使ってみましょう。