8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CodeIgniterAdvent Calendar 2013

Day 5

system/libraries/Log.phpをオーバーライドする

Last updated at Posted at 2013-12-22

公式が用意している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のように作成されます。

これオススメ!

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?