« エラーダイアログの表示 | トップページ | デバッグ用コード切り替えスイッチ »

2004.03.27

エラーログの出力

Eclipseにおいて,発生したエラーの状況がIStatusオブジェクトによって表現され,CoreException例外にIStatusオブジェクトが保持されて伝達される(「CoreExceptionとIStatus」参照)。そして,IStatusオブジェクトの内容をエラーダイアログに簡単に表示することができた(「エラーダイアログの表示」参照)。

しかし,エラーダイアログが表示できない(表示することがふさわしくない)状況も当然存在する。そんなときに頼るのがロギング。ちゃんと起きたことは残しときましょう,という機構。エラーダイアログは閉じてしまえばそれまでだが,同時にログに記録しておけば,ログをクリアしない限りいつでも見ることができるようになる。

IStatusオブジェクトがエラーダイアログに統合され簡単に表示できたように,IStatusオブジェクトの内容をログに記録することも簡単にできるようになっている

  try {
    ...
  } catch(CoreException e) {
    Plugin plugin = ...;
    ILog logger = plugin.getLog();
    IStatus status = e.getStatus();
    logger.log(status);
  }

ログの出力は,ILogインタフェースにより規定されているILogオブジェクトの取得は,Pluginオブジェクトが必要である。Pluginクラス(のサブクラス)を持たないプラグインでは,基本的にロギングはできないので,ちゃんとプラグインクラスを準備する必要がある(他のプラグインを強引に取得して出力もできるが,これはマナー違反だろう)。「Pluginクラスの作成」で取り上げたような感じでPluginクラスを作成し,MyPlugin.getInstance() という呼び出しを使って,簡単に任意の場所でPluginオブジェクトを取得できるようにしておくと良いだろう。

話を元に戻そう。Pluginオブジェクトを取得できたら,getLogメソッドを呼び出してILogオブジェクトを取得する。そして,ロギングの対象であるIStatusオブジェクトをCoreExceptionオブジェクトのgetStatusメソッドで取り出す。あとはILogオブジェクトのlogメソッドにIStatusオブジェクトを渡すことによって,IStatusオブジェクトの内容がログに書き出される

さて,一体どこに書き出されたのかと言うと,ちゃんとファイルに出力されている。ログのファイルのパスは,
  $ECLIPSE_HOME/workspace/.metadata/.log
である。Run-time workbenchを使った場合は,runtime-workspaceディレクトリになる。

そして,上記のログファイルの内容は,PDE Runtime/Error Logビューを使って閲覧できる。さらに,各ログ項目をダブルクリックすることにより,ログの詳細を閲覧できる。

error-log.gif

error-log-detail.gif

詳細の表示画面では,IStatusオブジェクトが持つ例外のスタックトレースなどが表示されていることがわかるだろう。

|

« エラーダイアログの表示 | トップページ | デバッグ用コード切り替えスイッチ »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/359418

この記事へのトラックバック一覧です: エラーログの出力:

« エラーダイアログの表示 | トップページ | デバッグ用コード切り替えスイッチ »