Laravelでログを出力する方法

Laravelでログを出力する方法をまとめます。

公式ドキュメント

https://laravel.com/docs/9.x/logging

Laravelのログをファサードを使用して出力する

Laravelのログをファサードのクラスを使用して出力する方法です。

下記のようなクラスを使用して、出力してみました。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;

class LogTesterController extends Controller
{
    public function outputLogFacade() {
        Log::emergency("emergency ログ!");
        Log::alert("alert ログ!");
        Log::critical("critical ログ!");
        Log::error("error ログ!");
        Log::warning("warning ログ!");
        Log::notice("notice ログ!");
        Log::info("info ログ!");
        Log::debug("debug ログ!");
    }
}

outputLogFacadeメソッドにアクセスしたら、それぞれのログレベルでメッセージを出力するようにしました。

Logファサードを使用する場合には、use文を使用してIlluminate\Support\Facades\Logを読み込んでおきます。

ログの出力場所と内容確認

画面描画やメソッドが発火することで出力されます。

出力されるログはデフォルトで、/storage/logs/laravel.logの場所に出力されます。

local.EMERGENCY: emergency ログ!  
local.ALERT: alert ログ!  
local.CRITICAL: critical ログ!  
local.ERROR: error ログ!  
local.WARNING: warning ログ!  
local.NOTICE: notice ログ!  
local.INFO: info ログ!  
local.DEBUG: debug ログ!

Laravelのログをヘルパーを使用して出力する

loggerヘルパーを使用して出力することもできます。

public function outputLogHelper() {
    logger()->emergency("emergency ログ!");
    logger()->alert("alert ログ!");
    logger()->critical("critical ログ!");
    logger()->error("error ログ!");
    logger()->warning("warning ログ!");
    logger()->notice("notice ログ!");
    logger()->info("info ログ!");
    logger()->debug("debug ログ!");
}

出力されるログレベルについて

出力できるログのレベルについてはRFC5424の仕様に順守しているようです。

公式ドキュメント

https://laravel.com/docs/9.x/logging#log-levels

emergency システム利用不可(最重要)レベル
alert 緊急対応必要なレベル
critical 致命的なエラー
error 一般的なエラー
warning 警告レベル
notice 通知レベル
info システム情報
debug デバッグ情報

Laravelのログの設定

Laravelのログの設定に関しては、config/logging.phpに書いています。

ログの名前を変更したい

デフォルトでは、stackチャンネルで、channelsにはsingleが設定されています。 そのため、channels配列のsingle配列の中身を修正します。

pathの箇所を下記のように変更します。

'single' => [
    'driver' => 'single',
    'path' => storage_path('logs/hoge.log'),
    'level' => env('LOG_LEVEL', 'debug'),
],

/storage/logs/hoge.logにログが出力されるようになります。

ログを日別に出力する

configファイルのstackのchannelsをdailyに変更するか、.envのLOG_CHANNELを変更します。

LOG_CHANNEL=daily