在开发Eclipse插件过程中,你是怎么做异常处理的? 通过debug模式来调试?使用System.out.println?还只是e.printStackTrace();? 以上方法都是不推荐的。原因有几点:影响性能、可维护性差、实际运行中没有控制台、无法做问题反馈(从用户的角度来看)。在Eclipse平台中,已经有一套可用的Log系统,下面给出一个使用的例子:
[codesyntax lang="java"]
/**
* Copyright http://surenpi.com. All Rights Reserved.
*/
package gboat2.dev.settings.log;
import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import gboat2.dev.settings.Activator;
/**
*
* 用于在插件中输出日志
* <p>
* 对Eclipse平台中的日志服务做封装
* </p>
* @author http://surenpi.com
* @since jdk1.6
* 2015年7月28日
*
*/
public class Logger {
private static final ILog log = Activator.getDefault().getLog();
private static final String ID = Activator.PLUGIN_ID;
public static void info(String message) {
info(message);
}
public static void info(String message, Throwable e) {
log(IStatus.INFO, message, e);
}
public static void warning(String message) {
warning( message);
}
public static void warning(String message, Throwable e) {
log(IStatus.WARNING, message, e);
}
public static void error(String message) {
error(message);
}
public static void error(String message, Throwable e) {
log(IStatus.ERROR, message, e);
}
public static void ok(String message) {
ok(message);
}
public static void ok(String message, Throwable e) {
log(IStatus.OK, message, e);
}
public static void log(int level, String message) {
log(level, message, null);
}
public static void log(int level, String message, Throwable e) {
log(new Status(level, ID, message, e));
}
public static void log(IStatus status) {
log.log(status);
}
}
[/codesyntax] 上面的类是对Eclipse平台的日志类做了一个简单的封装。从上面的代码可以看到,ILog这个借口需要的参数是IStatus,而IStatus是根据插件的id来区分的,无法直接定位到打印日志的具体位置。但是可以接受Throwable接口的参数。 调用上面的方法打印的日志可以从Eclipse中自带的日志视图(View)查看,如下图所示: [caption id="attachment_2131" align="alignnone" width="921"]

Eclipse Error Log[/caption]