PHP / apache server kod adlı Otomatik hata koleksiyonu

3 Cevap php

Bu apache error_log şeyleri dışarı balık ağrılıdır. Herkes biraz daha iyi hata toplama mekanizması işaretçileri var. "Using FogBUGZ to Get Crash Reports From Users - Automatically!" ne anlatılan gibi, ama bir PHP / apache webapp için bir şey

Daha spesifik olarak, bazı hata izleme yazılımı PHP ile atılır hataları kanca bazı mekanizması. Belki hatalar / uyarılar yakalar ve hata izleme yazılımı içine girilebilir veri toplamak bazı kütüphane / kod göstericisidir. Aşağıdaki bonus özellikleri ile:

  • yinelenen hataları tanımlar.
  • bir hata birden fazla hata iletisine neden olursa, bu bir hata olarak yakalanan olmalıdır

3 Cevap

Kendi özel PHP hata işleyicisi belirtebilirsiniz. İşte basit bir örnek:

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");

Biz sunucular üzerinde Zend Platform kullanıyoruz. Ücretsiz değil ama çok iyi çalışıyor ve ne sormak çoğu yok.

Bu sizin olayları tanımlamak ve tetikler ayarlamak için izin verir. Tetiklendiği zaman uygulamanın tüm devlet kaydedilir. Sen göz atabilir ve olay türleri filtre grafikleri veya listeleri, vb çiftleri, görünümü kaynağı olarak olayları işaretlemek

Güzel şey şudur: Bütün olay bu yana tek bir tıklama ile olay debug yakalar. Uygulama (kod, oturumda, değişkenler, çerezler, ve hatta yüklenen dosyalar) devlet Eclipse gönderilir ve duraklatıldı. Daha sonra hata oluştu uygulamanın kesin durumunu görmek için kod boyunca adım olabilir. Kök neden analizi için çok yararlıdır. Eğer isterseniz, bir geliştirme sunucusunda hatayı tekrar, bu nedenle üretim ile karışmaz.

Ignore the time of the error, and get an md5 hash of the error message. Check to see if that MD5 hash is already in your database of errors. If not, add it. If it is, maybe you want to append the date it happened this time.

  • bir hata birden fazla hata iletisine neden olursa, bu bir hata olarak yakalanan olmalıdır

That's tricky, unless you are very good with your use of the error_log() function. You could just agree on a convention, such as:

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

Eğer & ayrıştırmak Bu şekilde grup aynı ename ve MD5 ile herhangi bir hata emessage.