PHP nasıl yakalanmamış istisna oturum?

7 Cevap php

Ben istisnalar içine hataları dönüştürmek için nasıl öğrendim ve onlar yakalanmış değilse ben onları güzel görüntüler, ancak ben yararlı bir şekilde onları oturum nasıl bilmiyorum. Basitçe, yararlı olmayacak bir dosyaya yazmakta? Ve sen hala ne duruma neden bilmiyorum, bir veritabanı erişimi riske ediyorsun?

7 Cevap

Ben gerçekten kuluçka henüz olmasa da, günlüğü için log4php gibi. Ben hemen hemen her şeyi Log4net kullanmak, ve benim için tarzı oldukça doğal bulduk.

Sistem çöker ile ilgili olarak, size (örneğin kimin eşik KRİTİK veya HATA şeyler yanlış gittiğinde sadece devreye girer appenders vardır) birden fazla hedefe hatayı oturum açabilirsiniz. Ben mevcut appenders nasıl fail-safe emin değilim -? Veritabanı aşağı ise, bu nasıl appender başarısız oluyor - ama oldukça kolayca giriş yapamıyorsanız eğer incelikle başarısız olacak kendi appender yazabilirsiniz.

Sen set_error_handler sizin günlük hataları için özel bir istisna ayarlamak için kullanabilirsiniz. Varsayılan İstisna eylemcinin backtrace bunu neden ne bilgi verebilir gibi ben şahsen veritabanında saklayarak düşünecektim - veritabanı tutacağı ancak durum tetikleyen ise, bu elbette mümkün olmayacaktır.

Ayrıca kullanmak error_log sizin hataları oturum olabilir. Bu içeren mesaj yerlerinden bir seçim vardır:

error_log Alıntı

  1. Hatalar.log yapılandırma yönergesi ayarlanır ne bağlı İşletim Sisteminin sistem günlüğü mekanizması veya bir dosyayı kullanarak PHP'nin sistem günlüğü. Bu varsayılan seçenektir.
  2. Hedef parametresinde adrese e-posta ile gönderilir. Bu Dördüncü parametre, extra_headers kullanılan tek mesaj türüdür.
  3. Dosya hedefine eklenir. Bir satır otomatik ileti dize sonuna eklenir.

Edit: Does markdown have a noparse tag for underscores?

Basitçe, yararlı olmayacak bir dosyaya yazmakta?

Ama tabii ki - o ekranda görüntüleyerek daha iyi yapmak için harika bir şey. Siz kullanıcı "Üzgünüm, goofed. Mühendisleri tebliğ edilmiştir. Geri dönün ve tekrar deneyin" bunu çünkü, ve KESİNLİKLE HİÇBİR TEKNİK DETAY bir güvenlik riski olacağını söyledi güzel bir ekran göstermek istiyorum. Paylaşılan bir posta kutusuna bir e-posta göndermek ve daha sonra incelenmek üzere dosya veya DB istisna oturum açabilirsiniz. Bu en iyi uygulama olacaktır.

Ben bunları bir dosyaya yazmak istiyorum - ve belki dosya boyutu veya son değiştirilme tarihine değişiklikleri kontrol etmek için bir izleme sistemi kurmak. Webmin kolay bir yoldur, ama daha tam yazılım çözümleri vardır.

Eğer onun bir kerelik hata biliyorsanız, o zaman bir uyarı e-posta ince olabilir. Ancak, dakikada web sitesi başına bir çok hit olan, ever bir bildirim e-posta yok. Ben sistem veritabanına bağlanmak olamayacağını söylemek için üretilen dakikada yüzlerce e-posta alarak alaşağı bir web sitesi gördüm. O da, çünkü her yeni mesaj için yürütülüyor posta sunucusunun arasında> 200 loadavg vardı aslında hiç yardımcı olmadı. Bu durumda - En iyi senaryo uzak ve uzak oldu, bekçi filesizes kontrol ve SMS (belki bir IM) göndermek için harici bir hizmet bağlanırken, veya bir hata iletisi için bir web sayfasında harici bir sistem görünüm (sahip olan ekranda görünür olmak zorunda değildir - bu bir HTML açıklama olabilir).

Ayrıca yakalamak ve Google formları kullanarak kayıt PHP istisnalar olabilir. Sürecini açıklayan bir öğretici here vardır.

Ben hata oluştu nerede bir çok bağlıdır düşünüyorum. DB aşağı DB için oturum ise iyi bir fikir değil ;)

Ben hata günlüğü için syslog() işlevini kullanın, ama ben hiçbir syslog-desteğine sahip bir sistemde olduğumda bir dosyaya yazma hiçbir problem yok. Kolayca size bir e-posta ya da örneğin logwatch veya the standard syslogd kullanarak bir jabber mesaj göndermek için sistemi kurabilirsiniz.

Ben ikinci log4php. Ben genellikle bu istisnalar HATA veya CRITITCAL ve onları syslog yazılı olması gibi şeyler göndermek için yapılandırılmış olması. Oradan, Zenoss, Nagios, Splunk veya syslog konuşabilirsiniz başka bir şey içine syslog yem olabilir.