如何在CodeIgniter(PHP)中进行错误记录

时间:2010-07-09 04:21:46

标签: php codeigniter logging error-handling

我想在PHP CodeIgniter中记录错误。如何启用错误记录?

我有一些问题:

  1. 记录错误的所有步骤是什么?
  2. 如何创建错误日志文件?
  3. 如何将错误消息推送到日志文件中(每当发生错误时)?
  4. 如何通过电子邮件将该错误发送到电子邮件地址?

5 个答案:

答案 0 :(得分:159)

CodeIgniter内置了一些错误记录功能。

  • 使 / application / logs 文件夹可写
  • /application/config/config.php 中设置
    $config['log_threshold'] = 1;
    或使用更高的数字,具体取决于您在日志中需要多少详细信息< / LI>
  • 使用log_message('error', 'Some variable did not contain a value.');
  • 要发送电子邮件,您需要扩展核心CI_Exceptions类方法log_exceptions()。您可以自己执行此操作或使用this。有关扩展核心here
  • 的更多信息

请参阅http://www.codeigniter.com/user_guide/general/errors.html

答案 1 :(得分:23)

要简单地在服务器的错误日志中添加一行,请使用PHP的error_log()函数。但是,该方法不会发送电子邮件。

首先,触发错误:

trigger_error("Error message here", E_USER_ERROR);

默认情况下,这将进入服务器的错误日志文件。请参阅Apache的ErrorLog directive。要设置自己的日志文件:

ini_set('error_log', 'path/to/log/file');

请注意,您选择的日志文件必须已存在且可由服务器进程写入。使文件可写的最简单方法是使服务器用户成为文件的所有者。 (服务器用户可能是nobody,_www,apache或其他东西,具体取决于您的操作系统分发。)

要通过电子邮件发送错误,您需要设置自定义错误处理程序:

function mail_error($errno, $errstr, $errfile, $errline) {
  $message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
  error_log($message); // writes the error to the log file
  mail('you@yourdomain.com', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

请参阅relevant PHP documentation了解详情。

答案 2 :(得分:2)

还要确保您已允许codeigniter在配置文件中记录所需的消息类型。

string encoded; List<string> dec1 = new List<string>(); foreach (var a in result) { string e = ""; List<string> z = new List<string>(); foreach (var b in a) { z.Add(String.Join(",", b)); } e = String.Join(";", z); dec1.Add(e); } encoded = String.Join("&", dec1);

答案 3 :(得分:0)

更多关于问题第4部分的问题如何将该错误通过电子邮件发送到电子邮件地址? error_log函数也有电子邮件目的地。 http://php.net/manual/en/function.error-log.php

Agha,我在这里找到了一个显示用法的例子。 Send errors message via email using error_log()

error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL);

答案 4 :(得分:0)

In config.php add or edit the following lines to this:
------------------------------------------------------
$config['log_threshold'] = 4; // (1/2/3)
$config['log_path'] = '/home/path/to/application/logs/';

Run this command in the terminal:
----------------------------------
sudo chmod -R 777 /home/path/to/application/logs/