CakePHP2.xで、エラーログやデバッグログを日付ごとに出したいと思ったので挑戦したところ、思いの外簡単にできてしまったので、忘備録としてポストです。
日付別のログファイルを作成する
ログローテーションの意味
まず、CakePHPデフォルトのままですと、延々と同じファイルにログが蓄積されていきます。別にそれで問題あるのか? と思われがちですが、大有りです。
エラーが起こった際にログを辿って原因を究明するのは常套手段なのですが、ログファイルが日別になっていないと、該当ログを探すのにまず苦労します。手間はなくすのが正しい姿勢。
次にファイルサイズ。
以前、自作したWEBサーバーのログファイルをローテーションさせるのを忘れていて、1ファイルで1GBの容量のログファイルを作成したことがあり、普通に怒られました(苦笑)
いざそんなファイルのログを開ける必要に陥ったときに、開くことすら出来ない。開けたとしても動作が重い、メモリ不足でサーバ落ちるとかなったら元も子もありません。
なので、非常に重要です。
CakePHPの設定
ということで、今回はログファイル名が 20130701_debug.log や 20130701_error.log となるように、日付別のファイルを作成するようにします。
app/Config/bootstrap.php にてログ設定があるので、そちらを編集します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/** * Configures default file logging options */ App::uses('CakeLog', 'Log'); $log_path = LOGS.DS.date('Ymd').'_'; // ←★追加 CakeLog::config('debug', array( 'engine' => 'FileLog', 'types' => array('notice', 'info', 'debug'), 'file' => 'debug', 'path' => $log_path // ←★追加 )); CakeLog::config('error', array( 'engine' => 'FileLog', 'types' => array('warning', 'error', 'critical', 'alert', 'emergency'), 'file' => 'error', 'path' => $log_path // ←★追加 )); |
上記の設定をするだけで、エラーが出た日付ファイル名(yyyymmdd_debug.log と yyyymmdd_error.log)が、app/tmp/log に作成されます。
わたしのローカル環境では、こんな具合で出来上がりました。
いい感じですね。
20130703の SQLログ がやたらと大きいのでなにか起きたな、と思うことができるので、ローテーション設定は非常に重要です(2回目)
関連するかもしれないポスト

