|
|
Eclipseプラグインでは、ログ出力機構(ILogインターフェース)が用意されている。
Activator#getLog()でILogオブジェクトが取得できる。
ログを出力する例。
import org.eclipse.core.runtime.ILog; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status;
ILog log = Activator.getDefault().getLog(); log.log(new Status(IStatus.INFO, Activator.PLUGIN_ID, "info-message")); log.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, "warn-message")); log.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "err-message"));
try { 〜 } catch(Exception e) { log.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, "message", e)); log.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "message", e)); }
独自定義のメッセージコードを指定することも出来る。
log.log(new Status(IStatus.INFO, Activator.PLUGIN_ID, 100, "100-message", null)); log.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, 801, "801-message", e)); log.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 901, "901-message", e));
プラグインをテスト実行している場合、ログは実行元Eclipseのコンソールに表示される。
!ENTRY com.example.eclipse.plugin.hello 1 0 2013-01-04 21:46:23.791 !MESSAGE info-message
!ENTRY com.example.eclipse.plugin.hello 4 901 2013-01-04 21:46:24.188 !MESSAGE 901-message !STACK 0 java.lang.Exception at com.example.eclipse.plugin.hello.actions.HelloAction.run(HelloAction.java:45) at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251) 〜 at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
内容 | 例 | 説明 | |
---|---|---|---|
!ENTRY | プラグインID | com.example.eclipse.plugin.hello | Statusで指定したプラグインID。 |
重要度 | 1 | OK→0, INFO→1, WARNING→2, ERROR→4, CANCEL→8 | |
コード | 901 | Statusで指定した独自コード。指定しなかった場合は0。 | |
日付時刻 | 2013-01-04 21:46:23.791 | ||
!MESSAGE | メッセージ | ok-message | Statusで指定したメッセージ。 |
!STACK | スタックトレース | Statusで例外を渡した場合は、その例外のスタックトレースが表示される。 (nullを渡した場合は表示されない) |
重要度(severity)はビットマスクらしいので、OK・CANCELとINFO・WARNING・ERROR辺りを組み合わせるのだろうか。
メソッドによっては、CoreExceptionをスローすることが出来るメソッドがある。
CoreExceptionのコンストラクターにはログ出力でも使用するStatusクラスを渡す。
import org.eclipse.core.runtime.CoreException;
try { 〜 } catch(Exception e) { throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 901, "message", e)); }
ログメッセージは「.log
」ファイルに出力される。[2013-01-18]
場所は、「ワークスペースのディレクトリー/.metadata
」の下。
プラグインをテスト実行した場合は、テスト用Eclipseのワークスペースは、開発中プラグインのワークスペースの隣に作られる(親ディレクトリーが同じ場所)。