自定义codeigniter的日志文件名log_message()

pla*_*t x 5 php logging codeigniter

无论如何都要自定义log_message()CodeIgniter 2.1.0中生成的日志文件名?默认情况下,它的文件名是根据当前日期生成的.

saf*_*rov 16

log_message()功能是常见的系统功能.它的使用Log::write_log()方法记录错误.它不是很好的黑客核心文件.因此,您可以扩展Log库和覆盖write_log()功能.

如果你还没有扩展你的Log课程.创建文件application/libraries/MY_Log.php

class MY_Log extends CI_Log  {

    function MY_Log ()
    {
        parent::__construct();

        $this->ci =& get_instance();
    }

    public function write_log() { //here overriding
        if ($this->_enabled === FALSE)
        {
        return FALSE;
        }

        $level = strtoupper($level);

        if ( ! isset($this->_levels[$level]) OR
        ($this->_levels[$level] > $this->_threshold))
        {
        return FALSE;
        }

        /* HERE YOUR LOG FILENAME YOU CAN CHANGE ITS NAME */
        $filepath = $this->_log_path.'log-'.date('Y-m-d').EXT;
        $message  = '';

        if ( ! file_exists($filepath))
        {
        $message .= "<"."?php  if ( ! defined('BASEPATH'))
        exit('No direct script access allowed'); ?".">\n\n";
        }

        if ( ! $fp = @fopen($filepath, FOPEN_WRITE_CREATE))
        {
        return FALSE;
        }

        $message .= $level.' '.(($level == 'INFO') ? ' -' : '-').' ';
        $message .= date($this->_date_fmt). ' --> '.$msg."\n";

        flock($fp, LOCK_EX);
        fwrite($fp, $message);
        flock($fp, LOCK_UN);
        fclose($fp);

        @chmod($filepath, FILE_WRITE_MODE);
        return TRUE;
    }
}
Run Code Online (Sandbox Code Playgroud)

比log_message()功能将作为你的愿望