2009-01-29 36 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解析出&組的任何錯誤。

相關問題