मैं इस त्रुटि को किसी टेक्स्ट फ़ाइल या डेटाबेस में कैसे लॉग कर सकता हूं?PHP: घातक त्रुटियों को कैसे लॉग करें?
Fatal error: Call to undefined method PROJECTS::ssss()
मैं इस त्रुटि को किसी टेक्स्ट फ़ाइल या डेटाबेस में कैसे लॉग कर सकता हूं?PHP: घातक त्रुटियों को कैसे लॉग करें?
Fatal error: Call to undefined method PROJECTS::ssss()
यह एक कस्टम त्रुटि हैंडलर का उपयोग कर घातक त्रुटियों को संभालने के लिए संभव नहीं है।
सबसे अच्छा समाधान आपके php.ini में त्रुटि लॉगिंग (उदा। Syslog) को सक्षम करना और फिर असामान्य syslog प्रविष्टियों के बारे में नियमित ईमेल प्राप्त करने के लिए लॉगचेक/लॉगसेंट्री जैसे टूल का उपयोग करना है।
syslog PHP के बजाय फ़ाइल में त्रुटियों को लॉग भी कर सकते हैं - बस php.ini के त्रुटि लॉगिंग विकल्पों पर नज़र डालें।
log_errors = On
error_log = syslog
error_log = /path/to/some/folder/phperrors.log
जाहिर है आप केवल error_log
लाइनों में से एक का उपयोग करना चाहते।
class Base
{
public function __call($name)
{
MyLog::logError(...);
trigger_error("Function ".get_class($this)."::$name doesn't exist",
E_USER_ERROR);
}
}
प्रयास Base
से व्युत्पन्न वर्ग के गैर मौजूदा तरीकों को लागू करने की अंततः Base::__call()
द्वारा नियंत्रित किया जाएगा:
कुछ की तरह:
if(!method_exists($obj, 'method')){
$db->log('What you want to log'); //log in your DB
error_log('message');//Write to php's error log
}
मैं अपने त्रुटि लेकिन इसके बाद के संस्करण की तरह कुछ त्रुटि से निपटने के लिए एक त्रुटि हैंडलर है, मैं संभाल नहीं कर सका उन्हें या लॉग इन करें। – Hamidreza
उह, मुझे पूरा यकीन है कि वह एक सामान्य समाधान चाहता है। – ThiefMaster
मुझे नहीं पता कि यह त्रुटि कहां होती है। मुझे सभी प्रकार की त्रुटि लॉग इन करने की आवश्यकता है – Hamidreza
आप अपने सभी
आधार
कक्षाएं एक सुपर वर्ग method overloading उपयोग के हैं हो सकता था। तदनुसार, स्थिर तरीकों के लिए, __callStatic()
(PHP 5.3 के रूप में) है।
आपके कार्य से निपटने का एक तरीका है और वास्तव में आप FATAL त्रुटियों पर एक कस्टम त्रुटि हैंडलर सेट कर सकते हैं।
आप इसे इस तरह से कर सकते हैं:
ini_set('error_reporting', E_ERROR);
register_shutdown_function("fatal_handler");
function fatal_handler() {
$error = error_get_last();
//Do whatever you want with this error, for example:
YourDBApplicationLayer::writeFatal($error);
}
अब अपने संभव PHP7 में
try {
ggggg(); // <---- make fatal error
}catch(Error $e){
var_dump($e);
}
मैं php.ini में त्रुटि लॉग कैसे सक्षम कर सकता हूं? – Hamidreza
आप register_shutdown_function() –
@ सेबस्टियन ग्रिग्नोली के साथ घातक त्रुटि को संभालने में सक्षम होना चाहिए: उस फ़ंक्शन में कोई त्रुटि होने पर यह पता लगाने का कोई साफ तरीका नहीं है। – ThiefMaster