【vscodeスニペット】LaravelでAPIを実装する時のデバッグ方法
laravelでのデバッグといえばdd()が有名ですね!
が、コントローラがAPIの場合には、dd()を使っても画面上に情報を表示させることができません。
ではどうすればいいのかというと、ログ出力を使って情報を出力させます。
APIを使ってない方でも、ログならばデバッグ情報が残るので、dd()との使い分けとして知っておくといいかも!
Logファサードの基本
エイリアス登録
laravelのプロジェクトフォルダ内部「src/config/app.php」を開きます。
aliasesという箇所にLogが登録されているのをチェックしましょう。
'aliases' => [
'Log' => Illuminate\Support\Facades\Log::class,
]
ファイル内でLogを呼び出す
呼び出す方法はuse
を使う方法と\
(バックスラッシュ)を使う方法の2つです。
どちらにしろ、グローバル空間から呼び出すことに違いはありません。
use Log;
\Log::info();
使うならどちらか一方を使う方が、統一感があっていいですね!
ログの出力場所
config/loggin.php
をチェックしましょう。
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
デフォルトでは↑のようになっていて、src/storage/logs
の中にlaravel.log
が生成・更新されます。
スニペット
これから紹介するメソッドをスニペットにしておきました。
ユーザースニペット(php.json)にコピペするだけで、すぐに使えます。
"引数の表示": {
"prefix" : "log-args",
"body" : [
"Log::info('${1:value}の中身' . $1);",
],
"description": "expose to args content also can use typeof array"
},
"配列の表示": {
"prefix" : "log-array",
"body" : [
"Log::info('${1:array}の中身' . print_r(\\$$1, true));",
],
"description": "expose to arg content also can use typeof array"
},
"型の判定": {
"prefix" : "log-type",
"body" : [
"Log::info('type of \\$${1:value}' . gettype(\\$$1));",
],
"description": "expose to type"
},
"クラスの判定": {
"prefix" : "log-class",
"body" : [
"Log::info('class of \\$${1:value}' . get_class(\\$${1}));",
],
"description": "expose to arg class"
},
Logを使う
スニペット
1.引数を表示する
Log::info('引数の中身' . $value);
2.引数(配列)を表示する
1だと、配列などの中身は表示できません。
そんな時はprint_rを使いましょう。
Log::info('valueの中身' . print_r($value, true));
3.型を判定する
Log::info('valueの中身' . gettype($value));
リクエスト情報の型を判定するのに使うことが多いです。
4.クラスを判定する
Log::info('valueの中身' . get_class($value));
タイプヒンティングでクラスを固めている場合は使うことが多いかも。
print_r 以外に使える関数
PHP自体に馴染みのある方はvar_dumpが馴染み深いと思います。
・・・が、var_dump
は戻り値がないため、Log::info()
しても中身が表示できません!
print_r
の代用としては、var_exportを使うのもアリですね。
まとめ
Logを使うとAPI含めてバックエンドのデバッグができるよ。
調べたい値に応じてPHP組み込み関数と組み合わせて使おう!
Author And Source
この問題について(【vscodeスニペット】LaravelでAPIを実装する時のデバッグ方法), 我々は、より多くの情報をここで見つけました https://qiita.com/hiro5963/items/7f6a1a1bde6f07fc4c3e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .