Laravel4、組み込みプロファイラー
タグ: Laravel4
Laravel3ではデフォルトで入っていたプロファイラーですが、Laravel4からはコンポーサーのパッケージとして、自分でインストールします。
既に多くのプロファイラーが用意されています。いくつかを試しましたが、当方の環境では動かないものも多く、開発者の力量が現れています。
その中でも、動作の安定度と機能から、一つ紹介します。
インストール方法
通常のLaravel用パッケージのインストール手順と同じです。
まず、composer.jsonのrequireセクションに、"juy/profiler" : "dev-master"
を付け加え、composer update
を実行するか、composer require juy/profiler:dev-master
を実行してインストールします。
プロファイラーは、開発環境のみで使用するものですので、"require-dev"に付け加えるほうが、良いでしょう。これには多少の手間が必要です。(後述)
続いて、サービスプロバイダーの登録です。app/config/app.php
を開き、以下のプロバイダーを登録してください。
'Juy\Profiler\Providers\ProfilerServiceProvider',
次に、クラスエイリアスを登録します。同じく、app/config/app.php
を開き、追加してください。
'Profiler' => 'Juy\Profiler\Facades\Profiler',
このパッケージでは、publicへリソースを移す必要が無いようです。多分、Laravel3と同じように、出力ページの最後に、プロファイラーに必要なコードを追加しているからでしょう。そのため、artisan asset:publish
を実行する必要は無いようです。
次に、設定ファイルをapp下にコピーします。
php artisan config:publish juy/profiler
これにより設定ファイルが、app/config/packages/juy/profiler/config.php
にコピーされます。
この設定ファイルには、'profiler' => NULL
が設定されています。プロファイラーの有効・無効を切り替えます。NULL値の場合は、app.phpのdebugキーの指定により、有効・無効が切り替わります。そのため、NULLのままにしておくことをおすすめします。
この時点で、プロファイラーは動作しています。適当なページにアクセスすれば、下部にパネルが表示されます。
機能
Laravel3のプロファイラーとほぼ同等な機能を持っています。
タイマーの開始:
Profiler::start('my timer key');
タイマーの終了:
Profiler::end('my timer key');
ログの表示:
Logクラスを利用したログをパネルへ表示します。
Log::debug('Your message here'); Log::info('Your message here'); Log::notice('Your message here'); Log::warning('Your message here'); Log::error('Your message here'); Log::critical('Your message here'); Log::alert('Your message here'); Log::emergency('Your message here');
プロファイラー使用上の注意
多くのプロファイラーでは、今回のセッションの情報を出力します。
つまり、エラーなどでリダイレクトする場合、リダイレクト前の情報は見ることができません。
初心者の場合、情報が表示されずに悩む事になるでしょう。リダイレクトすると別セッションになることを記憶にとどめておきましょう。
require-dev使用時
composer.jsonのrequire-devセクションに、このパッケージを登録した場合、本番環境でcomposer update --no-dev
を実行すると、パッケージ自身が消去されます。
パッケージが削除されてしまうため、composer updateの後に起動されるコマンド実行が、サービスプロバイダーが見つからず、エラーになってしまいます。もちろん、Webページにアクセスしても、例外ページが表示されるか、エラーページが表示されることになります。
面倒であれば、requireセクションに登録し、本番環境ではプロファイラーが動作しないように設定ましょう。パッケージの設定ファイルでprofilerキーがNULLであれば、debugキーをfalseに設定することで、同時にプロファイラーも動作しなくなります。
ただ、セキュリティーを向上させるため、プロファイラー自身はやはりアンインストールしたい場合は、composer update --no-devを実行する前に、サービスプロバーダーとクラスエイリアスの登録を削除しておくか、もしくは環境による設定ファイルの使い分けを利用し、production環境用に、require-devセクションに指定したパッケージの指定を含まない、app.phpを用意しておく必要があります。