環境
- windows10
- DockerDesktop for Win 3.5.x
- Laravel 8.x
- PHP 8.x
- VsCode
- gitbash 2.32.0.1
ロギング
Logファサード
- LaravelをApiとして使用している場合はdd()等が使えないので、Logファサードをログファイルに出力してデバックする
use Illuminate\Support\Facades\Log;
Log::debug("logMsg", $data); // $dataがメッセージ付きでログファイルに出力される
ログレベル
- 8つのログレベル(emergency、alert、critical、error、warning、notice、info、debug)が存在する
Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);
- try-catchでログの出力を切り分けたりするのは割とよくある使い方
try {
Log::info('SUCESS', []);
} catch (\Exception $e) {
Log::error('Failure', [$e->getMessage()]);
}
ログの出力先
- チャンネル
- Laravelでは、ログ情報を書き込む方法をチャンネルというキーで.envに環境変数として設定可能
LOG_CHANNEL=stack
- ログの出力先の指定
- singleは、storage/log/laravel.logに出力する
- dailyは、storage/log/laravel-YYYY-MM-DD.logに出力する(1ファイルに1日分のログが出力)
- デフォルトのstackだと、複数のチャンネルを1つのログチャンネルに組み合わせることができる(デフォルトでは、stackのchannelsにはsingleしか指定されていないので、結果的にはstorage/logs/larave.logに出力される)
- stackの設定値はconfig/logging.phpを見ると確認できる
tinker
上記もしくはLaravelのtinkerで、デバックすることも可能
php artisan tinker
>>> ModelUser::query()->find(2)
=> App\Models\ModelUser {#3705
id: 2,
name: "Isobel Fisher",
email: "lang.deron@example.net",
..
}
以上です。
まとめ
いかがでしたでしょうか。本記事では、LaravelをApiとして使用する場合におけるもっとも簡単なロギングの方法について紹介しています。