エラーログの出力
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ビューを使って閲覧できる。さらに,各ログ項目をダブルクリックすることにより,ログの詳細を閲覧できる。
詳細の表示画面では,IStatusオブジェクトが持つ例外のスタックトレースなどが表示されていることがわかるだろう。
| 固定リンク
この記事へのコメントは終了しました。
コメント