2013-10-18 6 views
10

के लिए लिख रहा प्रलेखन के माध्यम से देखा है और किसी भी त्रुटि के लिए लॉगिंग को बदलने के लिए है, जो सामान्य रूप से/एप्लिकेशन/भंडारण/लॉग/लॉग/लॉग को लिखने के लिए एक रास्ता नहीं मिल रहा है के लिए ईमेल भेजने के लिए -apache2handler-xxxx-xx-xx.txtLaravel बजाय प्रवेश करने भंडारण

लेकिन उत्पादन सर्वर पर, मैं उन के बजाय मुझे ईमेल द्वारा भेजे जाते के किसी भी चाहते हैं।

क्या ऐसा करने का कोई तरीका है?

उत्तर

18

मैं अभी भी त्रुटि लॉग इन करें, और अगर यह उत्पादन है, अपवाद के साथ एक ईमेल भेजें:

App::error(function(Exception $exception, $code) 
{ 
Log::error($exception); 

if (Config::getEnvironment() == 'production') 
{ 
    $data = array('exception' => $exception); 
    Mail::send('emails.error', $data, function($message) 
    { 
     $message->from($email_app); 
     $message->to(Config::get('settings.error_email'))->subject(Config::get('settings.app_name') . ' Error'); 
    }); 
    Log::info('Error Email sent to ' . Config::get('settings.error_email')); 
    return Response::view('errors.500', array(), 500); 
} 
}); 
+3

कॉन्फ़िगर :: getEnvironment() के बजाय ऐप :: पर्यावरण() का उपयोग करने के बारे में क्या? –

+0

जब मैं ऐसा करता हूं तो यह मुझे एक ही मेल की यादृच्छिक संख्या भेजता है? – KeizerBridge

+0

इसे लॉग में जैसा दिखने के लिए, स्ट्रिंग के अपवाद को डालने के लिए मजबूर होना बेहतर है। $ डेटा = सरणी ('अपवाद' => (स्ट्रिंग) $ अपवाद); –

2
App::error(function(Exception $exception) 
{ 
    //Log::error($exception); 
    // send email 
}); 

चेक यहाँ डॉक्स: http://laravel.com/docs/errors#handling-errors

मूल रूप से यह क्या तर्क हैंडलर में डाल करने के लिए आप पर निर्भर है। मुझे लगता है कि उत्पादन के लिए अलग ग्लोबल.एफ़पी बनाना भी संभव हो सकता है, बिना किसी बयान के अगर यह पता लगाने के लिए कि आप किस पर्यावरण पर हैं।

+3

पर भी एक नज़र डालें, यदि आप एक ईमेल चाहते हैं तो इस मार्ग पर जाने के लिए निश्चित रूप से बेहतर है। यदि आपका त्रुटि बहुत अधिक हो जाता है तो अपने इनबॉक्स को नष्ट करने से सावधान रहें। आप अचानक 893475 9 34 अपठित ईमेल नहीं चाहते हैं। – fideloper

1

उपयोग पैकेज

तरह

संगीतकार के माध्यम से इस पैकेज की स्थापना के द्वारा शुरू करो। दिनेश/बगोनमेल की आवश्यकता के लिए अपनी प्रोजेक्ट की कंपोज़र.जेसन फ़ाइल संपादित करें।

या जाएँ

http://dineshrabara.github.io/bugonemail/

5

कारण Laravel आंतरिक monolog पुस्तकालय उपयोग करता है, मुझे लगता है कि यह इच्छित लॉग संचालकों उपयोग करने के लिए एक बेहतर समाधान है। इसलिए लॉग की हर अनचाहे अपवाद और मैन्युअल कॉल आपके मेल पते पर भेजी जाएगी।

यदि आप उपयोग कर रहे हैं मेल()

को अपने ऐप्लिकेशन पर NativeMailerHandler जोड़ें/शुरू/global.php:

$logFile = 'log-'.php_sapi_name().'.txt'; 

Log::useDailyFiles(storage_path().'/logs/'.$logFile); 
Log::getMonolog()->pushHandler(
    new Monolog\Handler\NativeMailerHandler(
     '[email protected]', 
     '[Log] Some Subject', 
     '[email protected]' 
     Logger::ERROR, // set minimal log lvl for mail 
     true, // bubble to next handler? 
     70 // max column width in your mail 
    ) 
); 

यदि आप कॉन्फ़िगर कर दिया है Laravel एसएमटीपी मेलिंग

को अपने ऐप्लिकेशन पर SwiftMailerHandler जोड़ें/शुरू/global.php:

(स्विफ्ट मेलर का आंतरिक रूप से लैरावेल द्वारा भी उपयोग किया जाता है)

$logFile = 'log-'.php_sapi_name().'.txt'; 

Log::useDailyFiles(storage_path().'/logs/'.$logFile); 
Log::getMonolog()->pushHandler(
    new Monolog\Handler\SwiftMailerHandler(
     Mail::getSwiftMailer(), 
     Swift_Message::newInstance('[Log] Some Subject')->setFrom('[email protected]')->setTo('[email protected]'), 
     Logger::ERROR, // set minimal log lvl for mail 
     true // bubble to next handler? 
    ) 
); 

यदि आप चाहें तो अन्य पोस्ट में वर्णित पर्यावरण जांच जोड़ें। कई अन्य हैंडलरों के लिए, https://github.com/seldaek/monolog

संबंधित मुद्दे