EclipseにはLogging機能が予め用意されている。
Logを出力するには、org.eclipse.core.runtime.ILogインターフェースが提供する機能を使用する。このインターフェースの実装クラスはPluginクラスのgetLog()メソッドを呼び出すことで、取得することができる。
ActivatorがAbstractUIPluginのサブクラスだとすると、
// ActivatorはPluginのサブクラスであるAbstractUIPluginのサブクラス
ILog log = Activator.getDefault().getLog();
で取得できる。
ILogインターフェースを取得すれば、後は、IStatusインターフェースの実装クラスを引数として、log()メソッドを呼び出せば、ログファイルにログが出力される。
メッセージや種類(エラーか警告かなど)はそのIStatus実装クラスに設定する。
ログの出力先ランタイムワークスペース/.metadata/.log
ログローテーションローテーションの設定は、システムプロパティで設定できる。
System Property | 説明
|
---|
eclipse.log.backup.max | ログファイルのバックアップ数。このプロパティに設定されている数だけ、.logがsize.maxを超えた場合に、バックアップとして退避される。 |
eclipse.log.size.max | ログファイルのサイズ(KB)。Javadocには記載されていないが、最少値は10であり、それ以下の値は10とみなされる。 |
ただし、ローテーションの実装方法は若干特殊なので注意が必要。
Eclipse起動 -> .log書き込み -> .logのサイズがsize.maxを超えれば.bak_0.logへ退避 -> Eclipse終了 の繰り返しなので、何回起動したかにかかわらずsize.max * backup.max分のログを保持しているわけではなく、size.max > .logである間は、複数回の起動に関するログが.log内に保持されるが、size.max < .logとなった時点ですでに.bak_0.logがある場合は削除され、その上で.logが退避される。当然ながら、.bak_1.logがすでにあった場合、新しく作成された.bak_0.logとはつながらないことになる。