web-dev-qa-db-ja.com

PHPバックトレースをエラーログに保存するにはどうすればよいですか?

私は今これを使っています:

error_log(serialize(debug_backtrace()));

しかし、毎回シリアル化を解除する必要があります。バックトレースを保存するより良い方法はありますか?

36
Leo Jiang

これにより、読み取り可能な文字列が生成されます。

error_log(print_r(debug_backtrace(), true));

さらに、 debug_print_backtrace() はバックトレースを文字列として出力し、その出力は通常の出力バッファー関数でキャプチャできます。

ob_start();
debug_print_backtrace();
error_log(ob_get_clean());
48

私の観点から、最良のアプローチは例外機能を使用することです:

$e = new Exception();
$e->getTraceAsString();
12
Igor Sydorenko
    $log = var_export(debug_backtrace(), true);

次に、変数$logを使用して、ファイルなどにログインします。

8
Pramendra Gupta

少し醜いですが実行可能です、私はこれを行います:

 error_log('Identifying string so that it doesn\'t just end up as gibberish' . json_encode(debug_backtrace()));
4
Kzqai

以下は、.txtファイルに書き込むか、そのコンテンツ($ content [0]など)にアクセスすることもできます。

    $content = unserialize(serialize(debug_backtrace()));
0
Robert Sinclair