2009-01-29 84 views
1

从apache error_log中剔除事情是很痛苦的。有人有指向更好的错误收集机制的指针吗?类似于“Using FogBUGZ to Get Crash Reports From Users - Automatically!”中所描述的内容,但是对于PHP/apache网络应用程序从PHP/apache服务器代码收集自动错误

更具体地说,有一些机制可以将PHP抛出的错误挂接到一些错误跟踪软件。也许指向一些库/代码,它捕获错误/警告并收集可以输入到错误跟踪软件中的数据。具有以下奖励功能:

  • 标识重复的错误。
  • 如果一个错误导致多条错误消息,应该我们在我们的服务器上使用Zend平台被捕捉为一个错误

回答

0

。这不是免费的,但工作得很好,大部分都是你要求的。

它允许您定义事件并设置触发器。当被触发时,应用程序的整个状态都被记录下来。您可以浏览和过滤图形或事件类型列表,将事件标记为重复项,查看源代码等。

最好的事情是:由于整个事件被捕获,您只需单击一下即可调试事件。应用程序的状态(代码,会话,变量,cookie,甚至上传的文件)被发送到Eclipse并暂停。然后,您可以浏览代码,查看发生错误时应用程序的确切状态。对根本原因分析非常有用。如果你愿意,你可以在开发服务器上重放错误,所以你不会干涉生产。

1

您可以指定自己的自定义PHP错误处理程序。下面是一个简单的例子:

function log_error_handler($errno, $str, $file, $line) 
{ 
    switch($errno) { 
     case E_USER_ERROR: 
      add_log("PHP Error", "Error $errno on line $line in $file: $str", "fatal"); 
      exit(1); 
      break; 

     case E_USER_WARNING: 
      add_log("PHP Warning", "Warning $errno on line $line in $file: $str", "warning"); 
      break; 

     case E_USER_NOTICE: 
      add_log("PHP Notice", "Notice $errno on line $line in $file: $str", "note"); 
      break; 

     default: 
//uncomment this next line to catch 
//   add_log("PHP", "Unknown error $errno on line $line in $file: $str", "note"); 
      break; 
    } 
} 
function add_log($code, $message, $type = 'message', $program = null){ 
    //do something like email the admin or enter in the data in to the bug tracking software db 
} 

// ### function to log php errors #### 
set_error_handler("log_error_handler"); 
0

忽略错误的时间,并获得错误消息的md5散列。 检查以确定该MD5散列是否已存在于您的错误数据库中。 如果没有,请添加它。 如果是这样,也许你想追加这次发生的日期。

  • 如果一个错误导致多条错误消息,它应该被捕捉为一个错误

这是棘手的,除非你是非常好,您使用error_log()功能。 你可以只同意一项公约,如:

error_log('ename:'.$error_name.' emessage:'.$e->toString()); 

这样,你可以用emessage相同ename和MD5解析出&组的任何错误。