2

重複の可能性:
Javaでデバッグプリントアウトにスタックトレースを追加するにはどうすればよいですか?

例外がない場合に、 log4jの出力にスタックトレースを含めるための最良の方法は何ですか?私が考えることができる唯一の方法は、新しいExceptionインスタンスを作成することです。

log.error("description", new Exception());

フォローアップ:私はとを完全に認識しThread.currentThread().getStackTrace()Thread.dumpStack()います。これらのコンソールへの出力は、多くの環境でlog4j出力とは別のものです。スタックトレースをコンソールではなくlog4jに記録する方法を探しています。

4

1 に答える 1

-1

スティーブ、現在のスレッドのスタック トレースが必要だということはわかりました。その場合currentThread()は、Thread クラスの static メソッドを使用してスタック トレースを取得することで取得できます。何かのようなもの:

StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();

getAllStackTraces()実行中のすべてのスレッドのスタック トレースをダンプする場合は、Thread クラスの静的メソッドを使用できます。

Map<Thread,StackTraceElement[]> stackTraces = Thread.getAllStackTraces();

アップデート

スティーブ、私dumpStack()は Thread クラスの静的メソッドを試しましたが、空の例外を使用してダンプを実行しているので、あなたのやり方は正しい、または「最良の方法」だと思います。

于 2012-10-10T18:25:12.890 に答える