CakePHP2系で速攻でログローテートする方法

DSC00066

2013年11月21日(木)

またしても俺です。

今回もCakePHPの簡単なTipsを紹介します。

 

今回紹介するのはCakePHP2系でのログローテートの方法。

ログローテートってなに?

ログローてーっとって簡単にいうと、CakePHPでもそうなんだけど、デバックログやエラーログ等をファイルに書きだしていると思いますが、デフォルトの設定だと1ファイルに対して永遠とログを書き出してしまうのです。

 

それのなにがいけないと言うと、1ファイルに大量のログを書き出しを行っていると、検索効率の低下や重すぎるファイルの扱いにとても困ってしまう場合があります。

 

普通のエディターだと5Mぐらいのテキストファイルを開くのに結構苦労したりします。

 

それが1Gとかになったらどうでしょう?

 

大変ですね。。。

そうなる事をあらかじめ予測して、ログファイルを日付毎等に分割することをローテートと言います。

 

 

今回は日付毎のログローテート方法を説明致します。

まぁちょっとかんがえると色々とバリエーション豊かに設定できるので覚えておいて損はないと思います。

設定方法

CakePHP2系にはデフォルトでコンフィグファイルに設定値が明記されています。

デフォルトの設定だとエラー毎にファイルを分けるような記述があります。

 

 

cakephp/app/config/bootstrap.php

 

 

デフォルト設定

/**
 * Configures default file logging options
 */
App::uses('CakeLog', 'Log');
CakeLog::config('debug', array(
	'engine' => 'FileLog',
	'types' => array('notice', 'info', 'debug'),
	'file' => 'debug',
));
CakeLog::config('error', array(
	'engine' => 'FileLog',
	'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
	'file' => 'error',
));


 

これを日付毎に書き換えるには、以下のように記述するだけ。

/**
 * 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					// 追加
));
// ログファイル追加
define('LOG_DATA', 'data');	// 新規に独自ログファイルを作成する場合はこのようにする
CakeLog::config('data', array(
	'engine' => 'FileLog',
	'types' => array('data'),
	'file' => 'data',
	'path' => $log_path
));


 

とても簡単に実装できますね♪

まとめ

このようにCakePHPでは簡単にローテートできるので、サービスを始める際にまずは設定するのが良いでしょう。

ログの管理も楽になるし、なによりローテートすることによりログを見るときに探しやすくなりますね。

 

この辺は最低限の知識だと思いますので覚えておいて損はないでしょう。

そうCakePHPならね。

 

 

※CakePHPに限らずログローテートは必要なことなので忘れずに設定しましょう。

 

 

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR