|
|
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のワークスペースは、開発中プラグインのワークスペースの隣に作られる(親ディレクトリーが同じ場所)。