S-JIS[2013-01-04/2013-01-18] 変更履歴

Eclipseプラグイン ログクラス

Eclipseプラグイン開発のログ出力について。


ILogクラスとは

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をスローすることが出来るメソッドがある。
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のワークスペースは、開発中プラグインのワークスペースの隣に作られる(親ディレクトリーが同じ場所)。


Eclipseプラグインへ戻る / Eclipseへ戻る / 技術メモへ戻る
メールの送信先:ひしだま