フロントエンドとバックエンドが分かれているSPA構成の開発では、デバッグのためにログを活用する場面が多くあります。
とくにバックエンドのLaravel側で、配列やコレクションの内容を出力したいとき、標準的なログ出力だけでは少し読みにくくなることがあります。
本記事では、配列やコレクションを見やすくログ出力する方法を紹介します。
想定環境
- バックエンド:Laravel 6.x
- フロントエンド:Bladeテンプレート(
.php拡張子付きのHTML)を使用 - デバッグ目的:Laravelの
Log::debug()でバックエンドの値を出力
よくあるデバッグコードと出力結果
$debug_array = [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
];
$debug_collect = collect($debug_array);
Log::debug('debug_array', [$debug_array]);
Log::debug('debug_collect', [$debug_collect]);
出力結果(Logファイル)
[2025-08-01 03:08:05.048][pid:43][req_id:""] local.DEBUG: debug_array [{"key1":"value1","key2":"value2","key3":"value3"}]
[2025-08-01 03:08:05.048][pid:43][req_id:""] local.DEBUG: debug_collect [{"Illuminate\\Support\\Collection":{"key1":"value1","key2":"value2","key3":"value3"}}]
少量のデータであれば問題ありませんが、要素数が増えてくると、ネストが深くなったり、見づらくなることがあります。
目的の値を探すのに時間がかかることもしばしば。
見やすく出力するには print_r() を使う
Log::debug(print_r($debug_array, true));
Log::debug(print_r($debug_collect->toArray(), true));
出力結果(見やすく整形される)
Array
(
[key1] => value1
[key2] => value2
[key3] => value3
)
print_r() は PHP の組み込み関数で、配列やオブジェクトの中身を整形して表示してくれます。
第2引数にtrueを渡すことで、出力を文字列として受け取れるため、Log::debug()と組み合わせて使えます。
コレクションの扱い
Laravelの Collectionオブジェクトは、そのままログ出力すると構造がネストしてしまいます。
その場合は、toArray() や all()を使って通常の配列に変換してから出力すると、より読みやすくなります。
Log::debug(print_r($debug_collect->toArray(), true));
まとめ
-
Log::debug()にそのまま配列やコレクションを渡すと、見づらい形式で出力されがち -
print_r($data, true)を使えば、整形されたログを出力できる -
コレクションは
toArray()やall()を使って配列に変換してから出力するのがオススメ