2013-10-28 7 views
11

問題があります。バックトレースを特定のケースでログファイルに記録したいと思います。 debug_print_backtrace()は私の目的のために正しい文字列を作りますが、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に保存されdebug_print_backtrace()とまったく同じ出力を与える...

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

とバッファリングのオーバーヘッドを回避します。これは、ログ記録の目的のために非常に十分である

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

そして、あなたは(など、行番号、ローカルオブジェクトVARS、)より多くの貴重なスタックトレース情報を取得したい場合は、してみてください...:

$this->log(print_r(debug_backtrace(), true));