2014-09-23 19 views
5

में लॉग घातक त्रुटियां मैं सिम्फनी में एक ईमेल लॉगिंग कॉन्फ़िगर करने का प्रयास कर रहा हूं। मैंने the cookbook का पालन किया और यह काम करता है लेकिन मुझे घातक त्रुटियों में समस्या है।सिम्फनी

उन त्रुटियों को प्रोड मोड में लॉग इन नहीं किया गया है। मुझे पता चला कि जब मैं app.php में Debug::enable(); जोड़ता हूं, तो त्रुटि लॉग हो जाती है, हालांकि मुझे अभी भी एक ईमेल नहीं मिलता है।

mail: 
     type:   fingers_crossed 
     action_level: critical 
     handler:  buffer 
    buffer: 
     type: buffer 
     handler: swift 
    swift: 
     type:  swift_mailer 
     from_email: %error_mail_from% 
     to_email: %error_mail_to% 
     subject: %error_mail_subject% 
     level:  debug 
+0

आप गंभीर रूप से त्रुटि में बदल सकते हैं क्योंकि आप 400x संदेश के साथ-साथ 500x संदेश भी देंगे। लेकिन @ यैन यूगोन सही है, एक घातक त्रुटि सब कुछ बंद कर देती है और वास्तव में उनको पकड़ने के लिए व्यावहारिक नहीं है। बेशक अगर आपको उत्पादन में घातक त्रुटियां मिल रही हैं तो इसका तात्पर्य है कि आपकी परीक्षण पद्धति को काम की ज़रूरत है। – Cerad

+1

@Cerad 4xx कोई समस्या नहीं है। वे तब भी होते हैं जब कोई पृष्ठ आईपैड के साथ पृष्ठ तक पहुंचता है (उपकरण उस के लिए अनुकूलित नहीं है) और यह इसके सेब-टच-आइकन का अनुरोध करता है, इसलिए मुझे उन परवाह नहीं है। मुझे यह भी पता है कि उत्पादन में घातक त्रुटि कभी नहीं होनी चाहिए, लेकिन अगर ऐसा होता है ... मैं जानना चाहता हूं! – Nemo64

उत्तर

2

यह पीएचपी गंभीर त्रुटियां लॉग इन करने के लिए एक आसान बात नहीं है, क्योंकि जब भी त्रुटि फेंक दिया जाता है, पीएचपी बंद ... हालांकि, वहाँ एक समारोह है कि कर सकते हैं है:

यहाँ प्रासंगिक विन्यास है एक छोटे से बात बस से पहले प्रक्रिया शट डाउन करने के लिए इस्तेमाल किया जा: register_shutdown_function

यह है कि कैसे Symfony के Debug::enable(); चाल कर रही है How do I catch a PHP Fatal Error

को देखें। https://github.com/symfony/Debug/blob/master/ErrorHandler.php#L118

1

पर एक नज़र डालें जो आप सिम्फनी संस्करण का उपयोग कर रहे हैं?

2.3 की तरह लगता है कि एक अच्छा सुधार है जो आपको ऐसा करने की अनुमति देता है (घातक त्रुटियों को लॉगिंग)। इस पर एक नज़र डालें: https://github.com/symfony/symfony/pull/6474

+0

मेरे पास एकाधिक सिम्फनी उदाहरण हैं। सबसे पुराना 2.1 है। मैं देखता हूं कि यह नए संस्करण में काम करता है या नहीं। – Nemo64

0

मैं एक ही समस्या (घातक मिली त्रुटियाँ उत्पादन में लॉग इन किया लेकिन ईमेल नहीं भेजा) था और मैं यह काम मेरे config_prod.php को जोड़ने बनाने में कामयाब रहे:

services: 
    mydebug.debug_handlers_listener: 
       class: Symfony\Component\HttpKernel\EventListener\DebugHandlersListener 
       arguments: 
        - { 0:"@http_kernel", 1:'terminateWithException'} 
       tags: 
        - { name: kernel.event_subscriber } 

मैंने पाया कि ऐसी सेवा \vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Resources\config\debug.xml में परिभाषित की गई है लेकिन debug_prod.xml में नहीं है।

terminateWithException पर कॉलबैक के साथ यह मेरे आवेदन में ठीक काम करता है।