WEB開発

Laravelでログを出力する

ここではLaravelでログを出力する方法をいくつか紹介します。

ログレベルごとの出力イメージも載せていますので自分の使いたいものを利用してみてください。

動画で確認

プロジェクト作成

まずはプロジェクトを作成しましょう。まだ作っていない方は以下を参照してください。

ログに関する設定

laravelではログに関わる設定ファイルは config/logging.php にあります。

ログにはチャンネル設定がありますがこの説明は割愛してログが出力されていることを確認します。

ログレベルに関して

ログレベルは次のように用意されています。

ログレベル
  • emergency
  • alert
  • critical
  • error
  • warning
  • notice
  • info
  • debug

config/logging.php の level はログ出力の最低レベルを表すものです。

ログの出力方法

use Illuminate\Support\Facades\Log; を追加しておきましょう。

Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);

出力したいログレベルごとのメソッドを呼び出します。

ログの出力先はどこ?

ログが出力されていない場合は以下のフォルダを確認してください。

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

app/logsフォルダもありますがここには出力されていません。

ログの出力先を変更する方法

ログの出力先を変更したい場合、config/logging.php を編集します。

通常は'single'の部分を利用するためここを変えてみましょう。

ログが出力されない場合は、ここで指定しているフォルダに書き込み権限があることを確認してください。

'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single'],
            'ignore_exceptions' => false,
        ],

        'single' => [
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'), //ここを変更
            'level' => env('LOG_LEVEL', 'debug'),
        ],
],

試してみる

インストールしたてのプロジェクトで試してみます。

Log::debug($message);

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Log;
Route::get('/', function () {
    Log::debug('welcomeページにアクセスします。');
    return view('welcome');
});
[2020-10-24 07:20:55] local.DEBUG: welcomeページにアクセスします。 

Log::info($message);

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Log;
Route::get('/', function () {
    Log::info('welcomeページにアクセスします。');
    return view('welcome');
});
[2020-10-25 02:18:18] local.INFO: welcomeページにアクセスします。  

Log::notice($message);

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Log;
Route::get('/', function () {
    Log::notice('welcomeページにアクセスします。');
    return view('welcome');
});
[2020-10-25 11:25:56] local.NOTICE: welcomeページにアクセスします。 

ログに変数を出力するには?

ログに変数を一緒に出力したい場合があると思います。そのようなときは次のように記載することができます。

use Illuminate\Support\Facades\Log;
Log::info('ユーザーログインに失敗しました。', ['id' => $user->id]);
[2022-10-24 22:14:36] local.INFO: ユーザーログインに失敗しました。 {"id":1} 

-WEB開発
-, , ,