2021.08.11 システム
[PHP] ログ出力の重要ワード
PHPの開発作業をしていると、変数の中身を確認したくなることがあると思います。
簡単にデータを確認するなら、「echo」「print_r()」「var_dump()」を使って画面に表示させるのはいいと思いますが、
こういったコードは作業後に残ってしまうことがよくあるので、あまりいい手段ではないですね。
処理状況を確認できるようなログを仕込む場合は、上記よりログファイルに書き込むタイプのログ出力を使いますよね。
CakePHPだとよく使うのは「$this->log()」でしょうか。
これが、バージョンが古いCakePHPからアップデートすると動作が変わってやりづらい部分にもなります。
古いバージョンのCakePHPだと、
———————————————————
[コード]
$this->log(‘処理が終了しました!(’ . $now_date . ‘)’, ‘info’);
$this->log(‘処理結果はこちら↓↓↓’, ‘info’);
$this->log($array_execute_result, ‘info’);
———————————————————
↓
———————————————————
[出力結果]
処理が終了しました!(2021/07/31 12:59:59)
処理結果はこちら↓↓↓
Array
(
[new_input_id] => 202107310000000001
[input_date] => 2021/07/31
[input_user_id] => 999999999
[result_kbn] => 1
)
———————————————————
こんな感じで出力していることが多いと思います。
ただし、新しいバージョンのCakePHPだと、
———————————————————
[出力結果]
処理が終了しました!(2021/07/31 12:59:59)
処理結果はこちら↓↓↓
Array
———————————————————
これしか出ません。配列の中身がログ出力されないんですね。
では、これの解決法はこちら↓
———————————————————
[コード]
$this->log(print_r($array_execute_result, true), ‘info’);
———————————————————
出力内容をprint_r()で囲ってやるだけです。
これで、配列の内容もログファイルに出力できるようになります。
古いフレームワークから載せ替えする場合とかに、出るはずのログが出なくなってしまうのにはこれで対応可能です。
あと、フレームワークのオブジェクト配列なんかも中身が見えるようになるので、デバッグ実行モードで重い動作をさせないでもより開発やデバッグが捗ると思います。
それでは。