わきゃ!
cakephp2でログローテーションを簡単にする方法
アプリケーションにおいて、時系列でなにが起きているかを把握するのがログです。
しかし、ログファイルを一つにまとめて管理をしてしまうと、あとで分析する時に「ファイルがおもすぎてひらけない!」なんてことになりかねません。
そのために、ログローテーションを行うことで、ログファイルの整理整頓を行いましょう。
// デフォルト設定
/**
* Configures default file logging options
*/
App::uses('CakeLog', 'Log');
CakeLog::config('debug', array(
'engine' => 'File',
'types' => array('notice', 'info', 'debug'),
'file' => 'debug',
));
CakeLog::config('error', array(
'engine' => 'File',
'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
'file' => 'error',
));
日にちごとにログローテーションを行う
ログローテーションの定石としては日付ごとにログを分割する方法があります。
/**
* Configures default file logging options
*/
App::uses('CakeLog', 'Log');
CakeLog::config('debug', array(
'engine' => 'FileLog',
'types' => array('notice', 'info', 'debug'),
'file' => date('Ymd') . '_' . 'debug',
));
CakeLog::config('error', array(
'engine' => 'FileLog',
'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
'file' => date('Ymd') . '_' . 'error',
));
date()を使用することで、ファイル名にログを書き出した日付を付与してくれます。
cakephp2.4以降ではオプションが追加されました
・size
基本的なログファイルのローテーション実装に使われます。 指定したサイズにログファイルのサイズが達した場合、現在のファイルが、 タイムスタンプをつけたファイル名に変更され、新しいログファイルが作成されます。 整数バイト値か、 『10MB』、『100KB』 など人が読みやすい文字列が使えます。 デフォルトは 10MB です。 size に false をセットすると、 下記の rotate オプションが無効になります。
・rotate
ログファイルは、削除される前に指定した回数ローテーションします。 もし、値が 0 の場合、古いファイルはローテーションする前に削除されます。デフォルトは 10。
・mask
新規作成されるファイルのパーミッションをセットします。もし、空のままの場合、 デフォルトのパーミッションが使用されます。
/**
* Configures default file logging options
*/
App::uses('CakeLog', 'Log');
CakeLog::config('debug', array(
'engine' => 'FileLog',
'types' => array('notice', 'info', 'debug'),
'file' => 'debug',
'size' => '7MB', // 指定したファイルサイズでログファイルを分割してくれる
'rotate' => 7, // 指定した数分だけログファイルを保持してくれる。それ以前のものは自動で削除。
));
CakeLog::config('error', array(
'engine' => 'FileLog',
'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
'file' => 'error',
'size' => '7MB', // 指定したファイルサイズでログファイルを分割してくれる
'rotate' => 7, // 指定した数分だけログファイルを保持してくれる。それ以前のものは自動で削除。
));