Laravelログ出力
投稿日:2026/01/19
Laravelでは、アプリケーションの動作状況やエラー内容を記録するために、標準でログ機能が用意されています。
ログを正しく出力・管理することで、障害調査・運用監視・パフォーマンス改善が容易になります。
本記事では、Laravelのログ出力を解説します。
ログとは?
ログとは、アプリケーションの実行履歴や状態を記録した情報のことです。
主な用途は次のとおりです。
- エラー発生時の原因調査
- バッチ処理・API処理の実行履歴確認
- 想定外の挙動の検知
- パフォーマンス分析
- 監査・証跡の保存
Laravelのログ保存先
storage/logs/laravel.log
※ 日次ローテーション設定の場合は、laravel-YYYY-MM-DD.logになります。
ログを出力する基本
サンプルコード
use Illuminate\Support\Facades\Log;
Log::info('処理を開始しました');
Log::warning('一部データが取得できませんでした');
Log::error('エラーが発生しました');
出力されるログ例
[2026-01-17 10:15:12] local.INFO: 処理を開始しました
[2026-01-17 10:15:13] local.WARNING: 一部データが取得できませんでした
[2026-01-17 10:15:14] local.ERROR: エラーが発生しました
ログレベルの使い分け
| レベル | 用途 |
|---|---|
| debug | 開発時の詳細情報 |
| info | 正常処理の記録 |
| warning | 想定外だが継続可能 |
| error | 処理失敗・例外 |
コンテキスト情報を付与する
サンプルコード
Log::info('ユーザー更新処理', [
'user_id' => $user->id,
'email' => $user->email,
]);
出力されるログ例
[2026-01-17 10:20:01] local.INFO: ユーザー更新処理
{"user_id":12,"email":"test@example.com"}
※ JSON形式で出力されるため、ログ検索や集計がしやすくなります。
例外をログに出力する
サンプルコード
try {
$service->execute();
} catch (\Throwable $e) {
Log::error('処理中に例外が発生しました', [
'message' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
}
出力されるログ例
[2026-01-17 10:25:42] local.ERROR: 処理中に例外が発生しました
{
"message": "Undefined variable: price",
"trace": "#0 /var/www/html/app/Service/SampleService.php:45 ..."
}
Artisan Command(バッチ)でのログ出力
サンプルコード
public function handle(): int
{
Log::info('サンプル公開バッチ開始');
try {
$count = Sample::where('is_published', false)
->update([
'is_published' => true,
'published_at' => now(),
]);
Log::info('サンプル公開バッチ完了', [
'updated_count' => $count,
]);
return Command::SUCCESS;
} catch (\Throwable $e) {
Log::error('サンプル公開バッチでエラー発生', [
'exception' => $e,
]);
return Command::FAILURE;
}
}
出力されるログ例(正常時)
[2026-01-17 02:00:01] production.INFO: サンプル公開バッチ開始
[2026-01-17 02:00:03] production.INFO: サンプル公開バッチ完了
{"updated_count":120}
出力されるログ例(エラー時)
[2026-01-17 02:00:02] production.ERROR: サンプル公開バッチでエラー発生
{
"exception": "SQLSTATE[HY000]: Deadlock found when trying to get lock ..."
}
チャンネル別ログ出力
サンプルコード
Log::channel('batch')->info('バッチ専用ログを出力');
出力されるログ例(storage/logs/batch.log)
[2026-01-17 02:10:00] local.INFO: バッチ専用ログを出力
本番運用でのログ設計ポイント
✅ 出力ルールを統一する
- 開始ログ
- 終了ログ
- 件数・処理結果
- エラーログ
を必ず出すルールを決めておくと、運用が安定します。
✅ 個人情報・機密情報を出力しない
以下の情報はログに出力しないよう注意します。
- パスワード
- トークン
- クレジットカード情報
- 個人情報(住所・電話番号など)
✅ ログ容量の管理
ログが肥大化すると、ディスクを圧迫します。
- 日次ローテーション
- 保存期間の制限
- 不要ログの削減
を設定しておくことが重要です。
✅ 開発環境と本番環境でログレベルを分ける
.envでログレベルを調整できます。
LOG_LEVEL=debug # 開発環境
LOG_LEVEL=info # 本番環境
まとめ
- Laravelでは Log ファサードで簡単にログ出力できる
- ログレベルを適切に使い分ける
- コンテキスト情報を一緒に記録する
- 例外時は必ずスタックトレースを残す
- 本番運用を意識したログ設計が重要