我想通過擴展現有的CI_Log類來將系統錯誤日誌存儲到數據庫。到目前爲止,這是我做了什麼如何存儲錯誤在CodeIgniter中登錄數據庫
class MY_Logger extends CI_Log{
public function __construct(){
parent::__construct();
}
function write_log($level='error', $msg, $php_error = FALSE){
$result = parent::write_log($level, $msg, $php_error);
$ci =& get_instance();
$ci->load->library('user_agent');
if ($result == TRUE && strtoupper($level) == 'ERROR') {
$gmtoffset = 60*60*5;
$post = array(
'log_type' => $level,
'log_message' => $msg,
'log_php_message' => $php_error,
'log_ip_origin' => $this->input->ip_address(),
'log_user_agent' => $this->agent->agent_string(),
'log_date' => date("Y-m-d H:i:s",time() + $gmtoffset)
);
$ci->db->insert('system_log', $post);
}
return $result;
}
}
和我有以下的autoload.php和config.php文件
$autoload['libraries'] = array('database', 'session', 'xmlrpc', 'user_agent');
$config['log_threshold'] = 1;
配置然而,當我測試了一下,不存儲錯誤數據庫(雖然它顯示並正確寫入日誌)
任何人都可以指出我在這裏錯過了什麼嗎?
PS:
已經改變了代碼,以便它延伸CI_Exceptions不起作用以及:
class MY_Exceptions extends CI_Exceptions{
function __construct(){
parent::__construct();
}
function log_exception($severity, $message, $filepath, $line){
//$result = parent::write_log($level, $msg, $php_error);
$ci =& get_instance();
//if ($result == TRUE && strtoupper($level) == 'ERROR') {
$gmtoffset = 60*60*5;
$post = array(
'log_type' => $severity,
'log_message' => $message,
'log_php_message' => $line,
'log_ip_origin' => $ci->input->ip_address(),
'log_user_agent' => $ci->agent->agent_string(),
'log_date' => date("Y-m-d H:i:s",time() + $gmtoffset)
);
$ci->db->insert('system_log', $post);
//}
parent::log_exception($severity, $message, $filepath, $line);
//return $result;
}
}
它拋出?\ – 2013-05-07 07:45:13
是您在庫文件夾中記錄任何錯誤?嘗試將其重命名爲MY_Log(或者你在配置中設置的任何前綴而不是MY_) – package 2013-05-07 07:49:38
@LolCoder我通過創建將數據插入到不存在的表的故意錯誤來測試它。 – Jeremy 2013-05-07 07:56:35