Help us understand the problem. What is going on with this article?

[Laravel]Laravel5.1のログ出力に関して調査したまとめ

More than 3 years have passed since last update.

Laravel

  • Laravel5.1 について調査した結果をまとめています

設定

  • config/app.php
<?php

return [
...
    /*
    |--------------------------------------------------------------------------
    | Logging Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure the log settings for your application. Out of
    | the box, Laravel uses the Monolog PHP logging library. This gives
    | you a variety of powerful log handlers / formatters to utilize.
    |
    | Available Settings: "single", "daily", "syslog", "errorlog"
    |
    */
    'log' => 'daily',
    // dailyログの場合の保存期間を指定
    'log_max_files' => '10',
...
]

logの設定値

保存

設定値 内容 備考
single storage/log/laravel.logに出力する 単一ファイルでログローテーションは無いため別途考慮する必要がある
daily storage/log/laravel-YYYY-MM-DD.logに出力する 1ファイルに1日分のログが出力される
デフォルトでは5日分が保存される
log_max_filesキーを追加設定すると保存期間を変更できる
syslog Syslogに出力する Syslogに関してはこちら
errorlog ログをerror_log()で出力する 出力先はphp.iniの設定による

追加設定

設定値 内容 備考
log_max_files daily設定時のログファイル保存期間を変更できる 設定が無い場合は5日分の保存となる

ログの出力

  • ログの出力にはLogファサードを使用する
  • Logファサードにはログレベルに合わせてメソッドが用意されている

メソッド一覧

メソッド ログレベル
Log::debug() debug
Log::info() info
Log::notice() notice
Log::warning() warning
Log::error() error
Log::critical() critical
Log::alert() alert

各エラーレベルの出力例

[05-Feb-2016 19:26:40 Asia/Tokyo] [2016-02-05 19:26:40] local.DEBUG: log test
[05-Feb-2016 19:26:40 Asia/Tokyo] [2016-02-05 19:26:40] local.INFO: log test
[05-Feb-2016 19:26:40 Asia/Tokyo] [2016-02-05 19:26:40] local.NOTICE: log test
[05-Feb-2016 19:26:40 Asia/Tokyo] [2016-02-05 19:26:40] local.WARNING: log test
[05-Feb-2016 19:26:40 Asia/Tokyo] [2016-02-05 19:26:40] local.ERROR: log test
[05-Feb-2016 19:26:40 Asia/Tokyo] [2016-02-05 19:26:40] local.CRITICAL: log test
[05-Feb-2016 19:26:40 Asia/Tokyo] [2016-02-05 19:26:40] local.ALERT: log test

第2引数に連想配列を指定

  • 第2引数に連想配列を指定しログ出力することが可能
\Log::debug('log test', ['apple' => 'red', 'number' => 123]);

第2引数指定しての出力例

[05-Feb-2016 19:30:26 Asia/Tokyo] [2016-02-05 19:30:26] local.DEBUG: log test {"apple":"red","number":123}

ログのカスタマイズ

  • ログ出力には「monolog」を使用している
  • 「monolog」を直接操作して処理を変更することが可能
$monolog = \Log::getMonolog();
$monolog->pushProcessor(function ($record) {
    $record['extra']['logDate'] = date('Y年m月d日 H:i:s');
    return $record;
});
$monolog->pushProcessor(new \Monolog\Processor\MemoryUsageProcessor());
$monolog->info('Usage Memory');

カスタマイズの出力例

[05-Feb-2016 19:45:47 Asia/Tokyo] [2016-02-05 19:45:47] local.INFO: Usage Memory  {"memory_usage":"3.25 MB","logDate":"2016年02月05日 19:45:47"}

カスタマイズに関して詳しくは以下参照

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away