Edited at

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

More than 1 year has 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"}

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

以上です。