公式が用意しているLogクラスって少し使いにくいんですよね。
設定でログをapplication/logsに出すようにしても、CIのsystemクラスたちがログ出力するゴミが多いんです。
なので、systemクラスのLog.phpをオーバーライドしたものを紹介します。
まず、application/librariesフォルダの中に、MY_Log.phpを定義してCI_Log
を継承するようにします。
class MY_Log extends CI_Log {
// something
}
そうしたら、実際にログ出力に使っているLog.phpの中にあるwrite_log
メソッドをそのままコピペして、'log-'の部分をメソッドの引数(使われているのをしっかり理解して引数とする)にしてしまい、それを使うようにします。
public function write_log($level = 'error', $msg, $php_error = FALSE, $prefix = 'log-', $ignore_level = false) {
// something
}
実際のファイルはこれです。こいつを使って下さい。
これを作ったら、今度はapplication/helpersフォルダにlog_helper.phpというファイルを作り、ヘルパー内でLogクラスをロードして、先ほどのwrite_log
のラッパー関数を作ります。
if (!function_exists('debug_log'))
{
function debug_log($message, $prefix = 'debug', $php_error = FALSE)
{
$_log =& load_class('Log');
$_log->write_log('DEBUG', $message, $php_error, $prefix.'-', TRUE);
}
}
いい名前が思いつかないので、debug_log
という名前で使ってます。
これがあれば、
debug_log('Exception message is here', 'exception');
のように使用すると、application/logsフォルダの中にexception-2013-12-23.php
のように作成されます。
これオススメ!