/bonvhp/webapp2       [後へ]   [目次へ]   [次へ] ~ [] ~

デバッグ:Monolog

前置き

Monolog は、 アドオンの Chrome Logger にデータを転送するライブラリです。 PHP コードの途中で、変数の値をリアルタイムに確認できます。 # Chrome デバッグコンソールにデータを表示するには、 # Monolog と Chrome Logger の両方が必要です。

インストール

サンプル・プログラムでは、既にインストール済みです。 もし、新規にインストールする場合は、 1. コマンドプロンプトを起動 2. WEBアプリコードのルートに移動 3. composer require monolog/monolog を実行すると、 \vendor\monolog フォルダ以下にインストールされます。

定義コード

サンプル・プログラムでは、既に対応済みです。 もし、新規に実装する場合は、 以下のコードを追加します。
// ライブラリの自動サーチ require_once __DIR__ . '/../vendor/autoload.php'; // コードが \main フォルダにある前提 // Monolog を使用する宣言 use Monolog\Logger; // ログ出力 use Monolog\Handler\ChromePHPHandler; // 出力先を Chrome デバッグコンソールに // ログ出力用のクラス設定 $log = new Logger('debug'); // 'debug' は、アプリ内で複数ロガーを使うときに識別するための名前。任意の文字列。 $log->pushHandler(new ChromePHPHandler(Logger::DEBUG)); // (後述:ログレベル)

ログレベル

ログには、以下のレベルが用意されています。 // レベル // 使い分け (一例) // Logger::DEBUG // 開発者向けのデバッグ情報 (重要度:最低) // Logger::INFO // ユーザー、SQL のログなど // Logger::NOTICE // 通常とは異なるが問題ではない // Logger::WARNING // エラーではない例外的な出来事 // Logger::ERROR // 実行時のエラー // Logger::CRITICAL // 危険な状況 // Logger::ALERT // 直ちに対応が必要 // Logger::EMERGENCY // 緊急警報 (重要度:最高) # 重要度は、DEBUG が最低で、EMERGENCY が最高に設定されています。 # 重要度の高低だけが定義されています。 # 「使い分け」はあくまで一例で、どう使うかはWEBアプリ側の自由です。 ChromePHPHandlerの引数で、どのレベルを出力対象にするかを指定します。 指定したレベルと、それより重要度の高いレベルを表示します。 前述のコードでは Logger::DEBUG を指定しています。 DEBUG は最低レベルなので、結果的に全てのレベルが出力対象になります。

使用方法

実際に変数の値をコンソールに出力する場合は、
$data = "debug message"; // 表示したい変数。 $log->info($data); // 表示指示。info は Logger::INFO レベルのログを出力。
前述のコードでは Logger::DEBUG を指定しているので、 info も表示対象になります。 表示指示の関数は、 $log->debug() $log->info() $log->notice() $log->warning() $log->error() $log->critical() $log->alert() $log->emergency() と、レベル毎に用意されています。 ChromePHPHandler() の引数を変更することで、 どのレベルまで表示するかを調整できます。 表示指示関数の引数は、文字列のみ利用可能です。 配列などの複座うな構造を持つ変数では、変換が必要になります。
// 一例 $data = array("a"=>"aaa", "b"=>"bbb"); $log->info(var_export($data, true));
pushHandler 用の関数は、ChromePHPHandler 以外にも多数用意されています。 StreamHandler を使えば、表示データをファイルに保存できます。
require_once __DIR__ . '/../vendor/autoload.php'; use Monolog\Logger; use Monolog\Handler\StreamHandler; // 出力先をストリーム(ファイルなど) に // ログ出力用のクラス設定 $log = new Logger('debug'); $log->pushHandler(new StreamHandler("php_debug.log", Logger::DEBUG)); // ファイル php_debug.log に保存
pushHandler は、複数を同時に指定することも可能です。
$log->pushHandler(new ChromePHPHandler(Logger::DEBUG)); $log->pushHandler(new StreamHandler("php_debug.log", Logger::DEBUG));

PHP WEB アプリのデバック用ツールは、他にも沢山あります。 が、記載現在もメンテナンスが続けられているものは少ないです。 特に PHP8 以降、エラーチェックが厳しくなってからは、 ChromePhp など、 エラーで実行が止まったり滞ったりするものが多いです。 サンプル・プログラムで使用している Monolog は、 高機能ですし、現在もメンテナンスが継続されているので助かります。
/bonvhp/webapp2       [後へ]   [目次へ]   [次へ]