2013-10-28 10 views
11

के लिए स्ट्रिंग करने के लिए मुझे कोई समस्या है। मैं लॉग-फ़ाइल में किसी विशिष्ट मामले में बैकट्रैक लॉग करना चाहता हूं। debug_print_backtrace() मेरे उद्देश्यों के लिए एक सही स्ट्रिंग बनाता है लेकिन debug_print_backtrace() इसे वापस करने के बजाय स्क्रीन पर ट्रेस प्रिंट करता है।डीबग_प्रिंट_बैकट्रैक() लॉग-फ़ाइल

कोई भी विचार?

उत्तर

15

कोई अन्य फ़ंक्शन का उपयोग करें।

$data = debug_backtrace(); 

या स्वरूपित उत्पादन स्ट्रिंग के लिए उत्पादन बफरिंग का उपयोग करें::

ob_start(); 
debug_print_backtrace(); 
$data = ob_get_clean(); 
+0

धन्यवाद! :) काम करता है – phip1611

5

यह भी कम कोड के साथ यह करने के लिए संभव है, वास्तव में debug_backtrace() एक सरणी है कि आप के माध्यम से, प्रारूप पाश और सहेज सकते हैं देता है। साथ बफरिंग की भूमि के ऊपर ...

$error_string = (new Exception)->getTraceAsString(); 

है कि आप $ ERROR_STRING को संग्रहीत debug_print_backtrace() के रूप में ठीक उसी उत्पादन देता है से बचें।

और आप एक अधिक मूल्यवान स्टैकट्रेस के लिए अधिक जानकारी (लाइन नंबर, स्थानीय वस्तु वार्स, आदि) प्राप्त करने के लिए चाहते हैं, तो कोशिश ...

$error_string = print_r($e->getTrace(), true); 
0

यह प्रवेश करने के उद्देश्य के लिए काफी पर्याप्त है:

$this->log(print_r(debug_backtrace(), true)); 
संबंधित मुद्दे