今回はログの出し方をアウトプットしていく
ログを使用する理由
①意図した値が変数に入ってきているか確認できる。
②どこまで正しい処理ができているのか確認できる。
ログを出力するためにLog::debugを使用する。
確認場所はstorage/logs/laravel.logファイルで確認できる。
①の使用例
//Log::debugを使用するため読み込む
use Illuminate\Support\Facades\Log;
class AuthenticatedSessionController extends Controller
{
public function store(LoginRequest $request)
{
$request->authenticate();
//$requestの中身をログで出す
Log::debug($request);
$request->session()->regenerate();
return redirect()->intended(RouteServiceProvider::HOME);
}
}
②の使用例
//Log::debugを使用するため読み込む
use Illuminate\Support\Facades\Log;
class AuthenticatedSessionController extends Controller
{
public function store(LoginRequest $request)
{
//正常な処理なのでLogには1が表示される
$request->authenticate();
Log::debug('1');
//正常な処理なのでLogには2が表示される
$request->session()->regenerate();
Log::debug('2');
//エラー処理なのでLogには3が表示されない
$request->
Log::debug('3');
return redirect()->intended(RouteServiceProvider::HOME);
}
}
日ごとでlaravel.logファイルを分ける
通常laravel.logファイルは一つにまとめられているのでわかりやすいように日ごとにlogファイルを分ける。
設定はconfig/logging.phpで行う。
Laravelはメッセージをログに記録するときに、デフォルトでstackチャンネルを使用しているのでstackチャンネルのチャンネルドライバの設定をdaily設定に変えてあげる
'stack' => [
'driver' => 'stack',
'channels' => ['daily'],//日毎にファイルを切り替えるRotatingFileHandlerベースのMonologドライバ
'ignore_exceptions' => false,
],
設定を変えたら一度キャッシュする必要がある。
下記のコマンドを実行してキャッシュする。
$php artisan cache:clear
$php artisan config:clear
追記
下記に使用可能なログチャンネルドライバを記載しておきます。
・custom = 指定ファクトリを呼び出してチャンネルを作成するドライバ
・daily = 日毎にファイルを切り替えるRotatingFileHandlerベースのMonologドライバ
・errorlog = ErrorLogHandlerベースのMonologドライバ
・monolog = Monologがサポートしているハンドラを使用するMonologファクトリドライバ
・null = すべてのログメッセージを破棄するドライバ
・papertrail = SyslogUdpHandlerベースのMonologドライバ
・single = 単一のファイルまたはパスベースのロガーチャンネル(StreamHandler)
・slack = SlackWebhookHandlerベースのMonologドライバ
・stack = 「マルチチャンネル」チャンネルの作成を容易にするラッパー
・syslog = SyslogHandlerベースのMonologドライバ