2012-11-20 13 views
8

javascriptでスタックトレースを生成する方法についての提案はありますか?JavaScriptスタックトレースを生成するには?

最新のブラウザであるChromeとFirefoxでは、スタックトレースを生成できるコンソールオブジェクトが公開されています。このメソッドは、スタックトレースを変数に格納する方法を提供しません。

https://github.com/eriwen/javascript-stacktrace 非常にうまく動作しますが、トレースの一部として含まれるスクリプトファイルをロードするための別々のajaxリクエストが生成されます。これはトレースライブラリの一般的な方法と思われます。私は、ブラウザが意味のあるスタックトレース(行番号、関数名、ファイル名、引数など)を生成するのに十分な情報を公開していないと推測しています。

+0

あなたはIE9-は、(私たちがしている、おそらくどのようなことを、それに直面させていることが正しいですここで問題がある)はあまり有益な情報を提供しません。 'window.onerror'からファイルと行番号を取得することができますが、時間と行番号の一部しか起動しない場合があります。 –

+0

はい、いつものように、IEは問題の子です。私はonerrorイベントの行番号と関数名情報がひどいIE7をサポートしています。これは依然として有用です。私はそれを使用して、キャッチされていないエラーのログを書き出します。 – Kyle

答えて

1

エラーオブジェクトを作成し、スタックメンバーを確認します。 Code Overtonesから適応:

var e = new Error('dummy'); 
var stack = e.stack.replace(/^[^\(]+?[\n$]/gm, '') // remove lines without '(' 
    .replace(/^\s+at\s+/gm, '') // remove prefix text ' at ' 
    .split('\n'); 
console.log(stack); 

Error.stackはMozilla's reference documentationに記載されています。

0

Airbrake provides a JavaScript library for logging stacktracesをAirbrakeアカウントまたはErrbitサーバーに送信します。

私はIEでスタックトレースを取得しませんし、他のものは不完全かもしれませんが、探しているラインに沿っているように見えます。

+0

ありがとうございます。私はすでに自分のサーバーにログオンできるフレームワークを用意しています。それは基本的にjav4のlog4jです。あなたが提供したリンクのスタックトレース生成コードは、私の質問でプロジェクトから借りたように見えます。私はスタックトレース生成のための他のライブラリを探しています。使用中の実際のロギングフレームワークは別々にする必要があります。 – Kyle

関連する問題