カテゴリ: Laravel 更新日: 2026/03/25

Laravelのログ管理をマスター!分割・ローテーション設定で効率的なデバッグを実現

Laravelのログを分割・ローテーションする設定方法
Laravelのログを分割・ローテーションする設定方法

先生と生徒の会話形式で理解しよう

生徒

「Laravelでアプリを作っているのですが、ログファイルがどんどん大きくなって、中身を確認するのが大変になってきました。」

先生

「それは大切な気づきですね。ログを一箇所に溜め込みすぎると、パソコンの動作が重くなったり、エラーを探すのが難しくなったりします。」

生徒

「日付ごとにファイルを分けたり、古いものを自動で消したりする方法はありますか?」

先生

「もちろんです。Laravelには『ログローテーション』という便利な仕組みがあります。設定方法を詳しく見ていきましょう!」

1. ログとログローテーションとは?

1. ログとログローテーションとは?
1. ログとログローテーションとは?

プログラミングの世界でいうログとは、アプリが動いているときに出す「日記」や「記録」のようなものです。例えば、「何時何分に誰がログインした」「何時何分にエラーが起きた」といった情報が書き込まれます。デバッグ(プログラムの不具合を見つけて直すこと)には欠かせない情報源です。

しかし、この日記を一つのノートにずっと書き続けると、ノートが分厚くなりすぎて、後から読み返すのが困難になります。そこで登場するのがログローテーションです。これは、一定の期間(例えば一日ごと)で新しいノートに切り替え、古すぎるノートを自動的に処分する仕組みのことです。これにより、サーバーの容量を節約しつつ、常に最新の状態を把握しやすくなります。

2. Laravelのログ設定ファイルを確認しよう

2. Laravelのログ設定ファイルを確認しよう
2. Laravelのログ設定ファイルを確認しよう

Laravelでログの出力方法を決めているのは、config/logging.phpというファイルです。パソコンを初めて触る方にとっては、設定ファイルと聞くと難しく感じるかもしれませんが、要は「アプリのルールを決める書類」だと思ってください。

このファイルの中には、ログをどのように保存するかという「チャンネル」という設定がたくさん並んでいます。標準の状態では、全ての記録を一箇所にまとめる設定になっていることが多いですが、ここを少し書き換えるだけで、日付ごとの分割が可能になります。まずはこのファイルが存在することを知っておきましょう。

3. 日付ごとにログを分割する「daily」設定

3. 日付ごとにログを分割する「daily」設定
3. 日付ごとにログを分割する「daily」設定

ログを一日ごとに新しいファイルへ保存するように設定してみましょう。Laravelではこれをdaily(デイリー)設定と呼びます。この設定を有効にすると、ファイル名に「laravel-2026-02-25.log」のように日付が自動で付くようになります。

設定を変更するには、プロジェクトの直下にある.envというファイルを開きます。これは環境設定ファイルと呼ばれるもので、アプリの基本的な動作スイッチを切り替える場所です。以下のコードのように書き換えてみてください。


# ログの種類を「stack」から「daily」に変更する
LOG_CHANNEL=daily

これだけで、Laravelは明日から新しいファイルにログを書き込み始めます。過去のログが別ファイルとして残るので、特定の日時に何が起きたかを探すのが格段に楽になります。

4. ログを保持する期間を制限する

4. ログを保持する期間を制限する
4. ログを保持する期間を制限する

ログを分割するようになったら、次に気になるのが「古いファイルが溜まりすぎること」です。何年も前のログをずっと取っておくと、ハードディスクがいっぱいになってしまいます。そこで、保存する日数を指定します。

Laravelではデフォルトで14日分保存されるようになっていますが、これを変更することも可能です。例えば、直近の7日分だけ残したい場合は、config/logging.phpの中にあるdailyの項目を探して、daysという値を書き換えます。パソコン初心者の方は、まずはこの「days」という言葉が「保存日数」を意味していることだけ覚えておけば十分です。


'daily' => [
    'driver' => 'daily',
    'path' => storage_path('logs/laravel.log'),
    'level' => 'debug',
    'days' => 7, // ここを7にすると、1週間分だけ保存されるようになります
],

5. 実際にログを出力して確認してみる

5. 実際にログを出力して確認してみる
5. 実際にログを出力して確認してみる

設定ができたら、本当にログが記録されるか試してみましょう。PHPのプログラムの中でLogという命令を使うことで、好きなメッセージをログに刻むことができます。デバッグの際に、変数の値(データの中身)を確認したいときによく使います。

以下のコードをコントローラーなどの処理の中に書いてみてください。画面には何も表示されませんが、裏側のファイルにはしっかりと文字が刻まれます。


use Illuminate\Support\Facades\Log;

public function checkStatus()
{
    // ログにメッセージを記録する
    Log::info('現在の処理は正常に通過しました。');
    
    // エラーが起きたと想定して記録する
    Log::error('何らかの問題が発生した可能性があります。');
    
    return 'ログを確認してください。';
}

実行後、storage/logs/というフォルダを見てみましょう。今日の日付が入ったファイルができているはずです。これが確認できれば、分割設定は成功です。

6. ログの出力レベル(重要度)について

6. ログの出力レベル(重要度)について
6. ログの出力レベル(重要度)について

ログには「レベル」という考え方があります。これは情報の重要度を表すラベルのようなものです。Laravelでは、緊急事態から単なるお知らせまで、いくつかの段階に分かれています。

よく使われるのは、不具合を見つけるためのdebug、通常の動作記録であるinfo、そして問題が起きたときのerrorです。設定によって、「errorレベル以上の重要なものだけをファイルに書く」といったフィルタリングも可能です。初心者のうちは、全ての情報が出るdebugにしておき、開発が進んでから整理していくのがおすすめです。

7. 複数の出力先をまとめるスタック機能

7. 複数の出力先をまとめるスタック機能
7. 複数の出力先をまとめるスタック機能

高度な使い方として、複数のログ出力方法を組み合わせるstack(スタック)という仕組みがあります。例えば、「普段のログは日付ごとにファイルに書き込みつつ、重大なエラーが起きたときだけメールで通知する」といった合わせ技が可能です。

Laravelの初期設定ではこのスタック機能が有効になっており、複数のチャンネルを束ねています。難しく感じるかもしれませんが、「ログの出し方は一種類だけじゃないんだな」と理解しておくだけで、将来的に複雑なシステムを作る際のヒントになります。今は基本のdaily設定を完璧にマスターすることを目指しましょう。

8. ログが書き込めないトラブルへの対処法

8. ログが書き込めないトラブルへの対処法
8. ログが書き込めないトラブルへの対処法

設定を正しくしたはずなのに、ログファイルが作成されないことがあります。その原因の多くはパーミッション(権限)という問題です。パソコンやサーバーには、「このファイルを読み書きしていいのは誰か」というルールがあります。

Laravelがログを書こうとしたときに、そのフォルダへの「書き込み許可」がないとエラーになります。もしログが出ないときは、storageフォルダの権限を確認してみてください。これはプログラミング未経験の方が最初につまずきやすいポイントですが、「ファイルを書く許可証が必要なんだ」とイメージしておけば、解決の糸口が見つかりやすくなります。


// フォルダの権限をコマンドで変更する例(Linux環境など)
// 初心者の方は、こういう呪文があるんだな程度でOKです
chmod -R 775 storage bootstrap/cache

9. ログを見やすくするデバッグツール

9. ログを見やすくするデバッグツール
9. ログを見やすくするデバッグツール

テキストファイルとしてのログを直接開いて読むのは、目が疲れて大変です。そこで、Laravelにはログを綺麗に表示してくれる外部ツール(ライブラリ)も存在します。例えば「Laravel Log Viewer」といったツールを入れると、ブラウザ上でログを色分けして表示できるようになります。

こうした便利な道具を活用することも、プログラミング学習の一部です。まずは標準のログ出力に慣れ、情報の追い方がわかってきたら、より快適なデバッグ環境を整えていきましょう。適切なログ管理は、あなたのアプリをより安全で信頼性の高いものへと進化させてくれます。

関連記事:
カテゴリの一覧へ
新着記事
New1
Symfony
Twigのテンプレート分割と再利用を完全解説!初心者向けinclude・embedの使い方
New2
Laravel
Laravelのマイグレーション構文まとめ!table・column・indexをやさしく解説
New3
PHP
PHPの文法ルールまとめ!セミコロンや大文字小文字の区別を初心者に解説
New4
Symfony
Twigでセッションとユーザー情報を表示する方法!Symfony初心者向け完全ガイド
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのフィルタ機能を完全ガイド!初心者でもわかるイベント・フィルタの使い方
No.2
Java&Spring記事人気No2
CodeIgniter
CodeIgniter 4のインストール方法まとめ(Composer・手動)
No.3
Java&Spring記事人気No3
Laravel
Laravelでtry-catchを使いこなす!例外処理の基本と効果的なパターン
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterのルーティングとは?仕組みと役割を基礎から解説
No.5
Java&Spring記事人気No5
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.6
Java&Spring記事人気No6
Symfony
Symfonyでアップロードファイル名を安全に変更・管理する方法を完全解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterの認証チェックをフィルタで実装する方法!初心者でもわかる完全ガイド