cakephp2.doc_003
最終投稿日:2019年11月20日
//[app][tmp][logs][debug.log]に吐かれる $this->log("hoge", LOG_DEBUG); //[app][tmp][logs][error.log]に吐かれる $this->log("foo", "error"); 任意の名前のログを吐き出すには、 [app/Config/bootstrap.php]を編集 $mydate = date("Ymd")."_hoge"; CakeLog::config('hoge', array( 'engine' => 'File', 'types' => array('hoge'), 'file' => $mydate, )); 上記設定で、『YYYYMMDD_hoge.log』というファイル名で[app][tmp][logs]に吐き出される 例) $this->log("エラーだよ", "hoge");
< 任意のファイル名をログを記述する >
//[app][tmp][logs][debug.log]に吐かれる
$this->log("hoge", LOG_DEBUG);
//[app][tmp][logs][error.log]に吐かれる
$this->log("hoge", LOG_ERROR);
//[app][tmp][logs][myerror.log]に吐かれる
$this->log("hoge", "myerror");
$mydate = date("Ymd")."_error";
//[app][tmp][logs]に日付単位のエラーファイルが作成される
$this->log("hoge",$mydate);
メモ)
エラーの内容は文字列でも変数、配列でも格納できる。
改行は勝手にされるので意識する必要はありません。
< 本番環境でのエラー >
CakePHPではデバッグレベルを0としている場合、あらゆるエラーが非表示になり、
CakePHPのエラーをはじめPHPのWarningやFatalエラーも記録されなくなります。
例えば、その状態で致命的なエラーが発生しても、画面が真っ白になったり、
ErrorHandler::error404メソッドが実行されるだけで、
どこかで能動的に$this->logなどで記録していない限り、解決につながる情報が記録されません。
そんな時には以下のコードを bootstrap.php に記述する事で致命的なエラーの場合
[app][tmp][logs][php_error.log]にログを記述する事ができる。
< bootstrap.php >
if ( Configure::read("debug") == 0 ) {
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set("display_errors", 0); ini_set("log_errors", 1);
ini_set("error_log", LOGS . DS . "php_error.log");
}