1. ホーム
  2. java

ログでスタックトレースが切り捨てられないようにするにはどうしたらいいですか?

2023-09-02 13:50:05

質問

Javaログで何度も次のようなものが表示されます。

Caused by: java.sql.BatchUpdateException: failed batch
    at org.hsqldb.jdbc.jdbcStatement.executeBatch(jdbcStatement.java:1102)
    at org.hsqldb.jdbc.jdbcPreparedStatement.executeBatch(jdbcPreparedStatement.java:514)
    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
    ... 113 more

スタックトレースを完全に表示する(つまり他の113行を表示する)方法をご存知の方はいらっしゃいますか?


その JavaDocs (Java 7 用) には、Throwableのかなり詳細な説明があります。

どのように解決するのですか?

113 more」と表示された場合、「causeed by」例外の残りの行が、親例外のその時点からの残りの行と同じであることを意味します。

例えば、以下のようになります。

com.something.XyzException
  at ...
  at ...
  at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
  at ... <the other 113 lines are here>...
Caused by: <the above>.

2つのスタックトレースはAbstractBatcher.executeBatchの242行目で「出会い」、それ以降は上位のコールトレースがラッピング例外と同じになります。