ログを出力する方法
開発環境:CakePHP2.5.1
開発していく上で調査をするためや記録としてログを保存したい時はlogメソッドを使います。
logメソッドの基本
コントローラーのログを書き込みたい場所に下記のように書きます。
<?php $this->log('ログ書き込み'); ?>
すると、app/tmp/logs/error.logに内容が追記されます。
デフォルト状態でerror.logに書き込まれる仕組み
先ほどのデフォルト状態ではerror.logに書き込まれましたが、その仕組みについてです。
まずlogメソッドはlib/Cake/Core/Object.phpに書かれています。
そこで第二引数のデフォルト値がLOG_ERRとなっています。
LOG_ERRの定数はlib/Cake/Log/CakeLog.phpに定義されています。
<?php protected static $_defaultLevels = array( 'emergency' => LOG_EMERG, 'alert' => LOG_ALERT, 'critical' => LOG_CRIT, 'error' => LOG_ERR, 'warning' => LOG_WARNING, 'notice' => LOG_NOTICE, 'info' => LOG_INFO, 'debug' => LOG_DEBUG, ); ?>
そして、app/Config/bootstrap.phpに次のように書かれています。
<?php CakeLog::config('error', array( 'engine' => 'File', 'types' => array('warning', 'error', 'critical', 'alert', 'emergency'), 'file' => 'error', )); ?>
この設定により、error.logに書き込まれます。
独自のファイルにログを出力する
original_log.logというファイルに出力したい場合、app/Config/bootstrap.phpに次のように設定します。
<?php CakeLog::config('original_log', array( 'engine' => 'File', 'types' => array('original_log'), 'file' => 'original_log', )); ?>
そして、コントローラー側でoriginal_logに書き込むよう指定します。
<?php $this->log('ログ書き込み', 'original_log'); ?>