ログ機能は標準で提供されているようだ。ただ、この機能に満足できない場合やログローテーションなど踏み込んだ機能を必要とする場合はカスタマイズが必要のようだ。しかしソースを変更することなくそういった変更を取り込めることは便利だと思う。
概要
- $this->log(メッセージ)
→ メッセージは文字列でも配列でもよい。
配列の場合は print_r されたものが出力される。
→ app/tmp/logs/error.log(デフォルト) - $this->log(メッセージ, タイプ)
→ LOG_ERROR(デフォルト)もしくはLOG_DEBUGが指定できる
→ LOG_DEBUGを指定したなら、app/tmp/logs/debug.log にログが出力される - ログファイルが存在しない場合はファイルを作成してくれる。
- app/tmp ディレクトリに書き込み権限を持つ必要がある。
- log メソッドは Object クラスにあるため、全てのクラスで継承され、コントローラ、モデル、ビューどこからでも利用できる。
スポンサードリンク
使用例1(マニュアルより)
$this->log(“Something didn’t work!”);
↓
// app/tmp/logs/error.log に、次のように追加される
2007-11-02 10:22:02 Error: Something didn’t work!
使用例2(マニュアルより)
// CakePHP のクラス中で log 関数を実行する
$this->log(‘A debugging message.’, LOG_DEBUG);
↓
// error.log ではなく app/tmp/logs/debug.log に、次のように追加される
2007-11-02 10:22:02 Error: A debugging message.
応用例1(引用)
Re: print_r() をログに記録してデバッグ
cake/libs/cake_log.php を app/vendors/ にでもコピーし、app_controller.php などで vendor(‘cake_log’) します。
コピーした cake_log.php の function write() 内の次の部分を
<?php
$filename = LOGS . $type . ‘.log’;
?>
このように
<?php
$filename = LOGS . date(‘ymd’) . ‘_’ . $type . ‘.log’;
?>
すると便利です。
CakeLogクラスはログ出力時に cake/basics.php の LogError()内でクラスが未定義な場合のみインクルードされるので、事前に用意しておくと出力の仕方にオリジナリティが持たせられます。
ダンプ
debug($fcar);
Debugger::dump($car);
参考文献
- log 関数を使う :: ログの記録(Logging) :: CakePHPによる作業の定石 :: マニュアル :: 1.2 Collection :: The Cookbook :
301 Moved Permanently - CakePHP ログ出力 | Sun Limited Mt. :
CakePHP ログ出力 | Sun Limited Mt.CakePHP でログ出力させるメモです。 $this->log(ログに出力するメッセージ, ログ種別); - ログ出力 – CakePHP Tips :
ログ出力 - CakePHP TipsCakePHP のインストール、アップグレード、開発、コーディング等の Tips をメモ - $this->log() よりもっと便利なのが! – Neo Inspiration :
302 Found - “print_r() をログに記録してデバッグ” フォーラム – CakePHP Users in Japan :
CakePHP - Build fast, grow solid | PHPフレームワークCakePHP is an open-source web, rapid development framework that makes building web applications simpler, faster and requ...
参考文献(主にデバッグ)
- デバッガクラス(Debugger Class)の利用 :: デバッグ(Debugging) :: CakePHPによる作業の定石 :: マニュアル :: 1.2 Collection :: The Cookbook :
301 Moved Permanently - デバッグ(Debugging) :: CakePHPによる作業の定石 :: マニュアル :: 1.2 Collection :: The Cookbook :
301 Moved Permanently
コメント
為になるサンプルありがとうございます。 応用例1を試してみたのですが、下記のようにクラスの2重定義のエラーが出てしまいます。
また、CakePHP1.2では
は使えずエラーになるので、
を利用しなくて良いのでしょうか?
この辺りは応用例1の通りやっていませんので、もしかしたらこの辺りが原因かもしません。 アドバイスをいただけないでしょうかm(__;m