ビジネス課題への解決策(アイディア)と、新たな発想(+α)が見つかるIT情報メディア

Menu
  1. TOP
  2. データ活用
  3. 標準エラー出力されない環境でのデバッグ方法

標準エラー出力されない環境でのデバッグ方法

  • LINEで送る
  • このエントリーをはてなブックマークに追加

今回はグループで扱っているESB製品を使っていたときのTIPSです。
このESB製品ですが、ビジネスロジックをフローサービスとJavaサービスの2通りの方法で表現できます。
しかし、フローサービスの場合はステップバイステップのデバッグが可能ですが、Javaサービスの場合はステップバイステップのデバッグが出来ません。
さらに、よくありがちな例外をキャッチしたときのスタックトレースを出そうにも、標準出力や標準エラー出力がどこにも出力されません。

 

例外をキャッチする例

try {
    //処理本体
} catch (Exception e) {
    e.printStackTrace();
}


これにはトホホな感じでした。
処理本体でエラーが発生しても、何が原因でエラーが発生しているのかまったく情報が出てきませんでした。

そこでエラーが発生したときの状況をファイルに出力することにしました。
今まで使ったことがなかったのですが、printStackTrace()メソッドにはPrintWriterを引数に渡すことが出来ます。そこにFileWriterを渡せばうまくいくのではないかと。

 

例外をファイル出力する例

try {
    //処理本体
} catch (Exception e) {
    try {
        FileWriter fw = new FileWriter("C:/log/stackTrace.txt");
        e.printStackTrace(new PrintWriter(fw));
        fw.close();
    } catch (IOException e2) {}
}


このESB製品でのカレントディレクトリがはっきりしなかったので、ログファイルをフルパスで指定しています。
とても短いコードですが、その効果は想像以上でデバッグが出来るようになりました。

もし似たような環境でデバッグする必要がありましたら、参考にしてください。

メールマガジンの登録はこちらから
メルマガ登録 お問い合わせ