ログ ファイルには、次の情報が含まれています。
[2012-09-24 00:09:32.590 +0000UTC] ERROR host server1 [] [] somepackage.someclass [] [Unknown] [V3rAqPaDvvAAAAExEXhdWGyh] [pjsQwTGHzxcAAAE5j4YdGvWV] "ThreadName" Some error happened: java.lang.ArrayIndexOutOfBoundsException: null
この 1 行だけで、例外スタック トレースはありません。
このtry
例外が発生するブロックは、javassist を使用して作成された動的に生成された Java バイトコードを実行しています。
私は2つのことについて疑問に思っています:
- The
java.lang.ArrayIndexOutOfBoundsException
: null logger.error("message", theException)
ブロック内で使用してログ フックを呼び出したにもかかわらず、スタック トレースが欠落しているcatch
ため、通常は完全なスタック トレースがログ ファイルに出力されます。
私の質問:
ログ出力「java.lang.ArrayIndexOutOfBoundsException: null」を引き起こす可能性のあるコードの種類は何ですか? これをテストプログラムで再現しようとしましたが、うまくいきませんでした。私はいつも "java.lang.ArrayIndexOutOfBoundsException: Index: 3" のようなものを取得します。
スタック トレースが欠落している理由は、このコードが実行時に動的に生成され、ロガー/JVM がスタック トレースまたは関連する行番号を「認識」していないためでしょうか?
私たちは現在、より多くの情報を得るためにデバッグと調査を行っていますが、おそらくこれは誰かにとって馴染みのあるものです.