سؤال

لقد وجدت كيفية تحويل الأخطاء إلى الاستثناءات ، وأنا عرضها بشكل جيد إذا لم تكن القبض عليه ، ولكن لا أعرف كيفية الدخول عليها بطريقة مفيدة.ببساطة كتابتها إلى ملف لن تكون مفيدة ؟ و هل خطر الوصول إلى قاعدة البيانات عندما لا تعرف ما سبب الاستثناء بعد ؟

هل كانت مفيدة؟

المحلول

أنا حقا مثل log4php للتسجيل, على الرغم من انها لم تخرج بعد من الحاضنة.يمكنني استخدام log4net في كل شيء تقريبا, و قد وجدت النمط الطبيعي تماما بالنسبة لي.

وفيما يتعلق تعطل النظام ، يمكنك تسجيل الخطأ إلى وجهات متعددة (على سبيل المثال ، appenders التي العتبة الحرجة أو خطأ أن تأتي فقط في اللعب عندما تسوء الأمور).أنا لست متأكدا من كيفية آمنة من الفشل القائمة appenders هي-إذا كانت قاعدة البيانات أسفل ، كيف appender تفشل ؟ --ولكن يمكن بسهولة تامة الكتابة الخاصة بك appender من شأنها أن تفشل برشاقة إذا كان غير قادر على تسجيل الدخول.

نصائح أخرى

هل يمكن استخدام set_error_handler إلى مجموعة مخصصة استثناء السجل الخاص بك من الأخطاء.كنت شخصيا أعتبر تخزينها في قاعدة البيانات الافتراضي استثناء معالج تعقب يمكن أن توفر معلومات عن ما سبب ذلك - وهذا بالطبع لن يكون ممكنا إذا كانت قاعدة البيانات معالج أثار عدا ذلك.

هل يمكن أيضا استخدام error_log إلى السجل الخاص بك من الأخطاء.لديها خيار من رسالة الأماكن بما في ذلك:

مقتبسة من error_log

  1. PHP نظام المسجل باستخدام نظام التشغيل نظام تسجيل آلية أو ملف ، اعتمادا على ما error_log تكوين التوجيه هو.هذا هو الخيار الافتراضي.
  2. أرسلت عن طريق البريد الإلكتروني إلى العنوان الوجهة المعلمة.هذا هو فقط رسالة اكتب فيها المعلمة الرابعة ، extra_headers يستخدم.
  3. إلحاق الملف الوجهة .السطر ليس إضافتها تلقائيا إلى نهاية الرسالة السلسلة.

تحرير:لا تخفيض السعر يكون noparse علامة تؤكد?

ببساطة كتابتها إلى ملف لن تكون مفيدة ؟

ولكن بالطبع هذا شيء عظيم أن تفعل أفضل بكثير من عرضها على الشاشة.كنت تريد أن تظهر للمستخدم الشاشة لطيفة وهو يقول "آسف, لقد أخطأ.المهندسين تم إخطار.العودة والمحاولة مرة أخرى" و بالتأكيد لا التفاصيل التقنية ، لأن ذلك سيكون خطرا على الأمن.يمكنك إرسال بريد إلكتروني إلى علبة بريد مشتركة و سجل استثناء أو ملف DB للمراجعة في وقت لاحق.وهذا من شأنه أن يكون أفضل الممارسات.

أود كتابتها إلى ملف وربما وضع نظام رصد ما يصل إلى التحقق من تغييرات على حجم الملف أو آخر تاريخ تعديل.Webmin هو واحد طريقة سهلة, ولكن هناك أكثر اكتمالا حلول البرمجيات.

إذا كنت تعرف لمرة واحدة خطأ ، ثم إرساله عبر البريد الإلكتروني إشعار يمكن أن يكون على ما يرام.ومع ذلك, مع العديد من الزيارات في الدقيقة الموقع, لا من أي وقت مضى البريد الإلكتروني الإخطار.رأيت الموقع من وجود مئات من رسائل البريد الإلكتروني في الدقيقة التي يتم إنشاؤها القول بأن النظام لا يمكن الاتصال بقاعدة البيانات.حقيقة أنه كان أيضا LoadAvg من > 200 بسبب من خادم البريد يتم تشغيل كل رسالة جديدة ، لا تساعد على الإطلاق.في هذا المثال - أفضل سيناريو كان بعيدا ، الوكالة الدولية للطاقة التحقق من filesizes وربط خارجي خدمة إرسال الرسائل القصيرة (ربما IM) ، أو وجود نظام خارجي نظرة على صفحة ويب عن رسالة خطأ (التي لا يجب أن تكون مرئية على الشاشة يمكن أن يكون في تعليق HTML).

أعتقد أن هذا يعتمد الكثير من حيث حدث الخطأ.إذا DB هو قطع الأشجار إلى DB ليست فكرة جيدة ;)

يمكنني استخدام syslog() وظيفة تسجيل الخطأ, ولكن ليس لدي أي مشاكل الكتابة إلى ملف عندما أكون على النظام الذي لا syslog-الدعم.يمكنك بسهولة إعداد النظام الخاص بك لإرسال البريد الإلكتروني أو جابر الرسالة باستخدام على سبيل المثال logwatch أو معيار syslogd.

لقد الثانية log4php.أنا عادة يكون تكوينه لإرسال أشياء مثل الاستثناءات خطأ أو CRITITCAL ويكون لهم مكتوب أن syslog.من هناك, يمكنك syslog تغذي Zenoss, Nagios, Splunk أو أي شيء آخر syslog يمكن التحدث.

يمكنك أيضا التقاط وتسجيل PHP الاستثناءات باستخدام نماذج Google.هناك البرنامج التعليمي هنا التي تشرح عملية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top