デバッグ用や運用エラーの記録用にログをファイルに書き出したい場合がある。CalePHPには手軽に使えるロギングの仕組みが用意されている。
Logging — CakePHP Cookbook 2.x documentation
http://book.cakephp.org/2.0/en/core-libraries/logging.html
Class CakeLog | CakePHP
http://api.cakephp.org/2.7/class-CakeLog.html
CakePHPのクラスではlog()関数を呼ぶことでログをファイルに書き出すことができる。log()関数は2つの引数を取り、1つ目の引数がログメッセージ、2つ目の引数はログ種別(error, warning, info, debugなど)である。ログ種別がログ出力先のファイル名を決定する。ログ種別を指定しないとLOG_ERRORが使われる。
1 2 3 4 5 |
// Executing this inside a CakePHP class $this->log("Something didn't work!"); // Results in this being appended to app/tmp/logs/error.log // 2007-11-02 10:22:02 Error: Something didn't work! |
あるいはCakeLog::write()関数を呼ぶことにより、任意のクラスからログを書き出すことができる。write()関数の1つ目の引数にはログ種別、2つ目の引数にはログメッセージを指定する。
1 2 3 4 5 |
// called statically CakeLog::write('activity', 'A special message for activity logging'); // Results in this being appended to app/tmp/logs/activity.log (rather than error.log) // 2007-11-02 10:22:02 Activity: A special message for activity logging |
config()関数を使ってログの動作オプションを指定することもできる。以下はログファイルのパスを指定した例。注意事項としては、config()関数は必ずapp/Config/bootstrap.phpで呼び出すこと。core.phpで呼び出すと、パスが未設定のために不具合の原因となる。
1 2 3 4 |
CakeLog::config('custom_path', array( 'engine' => 'File', 'path' => '/path/to/custom/place/' )); |
参考サイト
【CakePHP】独自ログ – Qiita
http://qiita.com/kazu56/items/1930bfb8960d52d71a50
CakePHPでログの振り分け(1つのconfigで複数ファイルに) – Qiita
http://qiita.com/HamaTech/items/4c92b36c8c9803c4eec9
CakePHP 2.x – ログローテーション
http://kwski.net/cakephp-2-x/1048/