Codeigniter错误日志不包括文件名

时间:2015-07-29 14:19:08

标签: php codeigniter logging error-handling

我正在尝试从我的codeigniter网络应用程序记录错误,我认为写入文件的消息会被截断。我这样说是因为每当屏幕上显示错误时我都会得到发生错误的文件名,而当我检查错误日志时它只会说,

  

查询错误:您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第24行附近使用正确的语法

有没有办法让错误日志返回错误的文件位置?

1 个答案:

答案 0 :(得分:2)

不,目前在CodeIgniter中没有内置的方法。

您可以做的是扩展核心CI_Log类,覆盖其write_log()方法并使用debug_backtrace()获取相应的文件名并将其添加到消息中。

// application/core/MY_Log.php
class MY_Log extends CI_Log {

    public function write_log($level, $msg)
    {
        foreach (debug_backtrace() as $call)
        {
            // Somehow find the appropriate call here ...
            if ( ! (/* condition to ignore error-handling calls */))
            {
                break;
            }

            $msg = '['.$call['file'].'] '.$msg;
            break;
        }

        return parent::write_log($level, $msg);
    }

}