如何在 Eclipse 的 Error Log 中显示插件自己的日志

开发任何软件都不得不处理 Exception 和 Log,Eclipse Plug-in 也是如此。不过幸运的是,Eclipse PDE 提供了记录及显示Exception和Log的机制:Error Log View。作为 Eclipse SDK 的一部分,PDE 的普及率很高,所以除非你是要做 RCP,不然的话用 Error Log View处理 Exception 和 Log 应该是你的最佳选择。当然,这也带来了对 PDE 的依赖性。

使用 Error Log View实际上非常简单,每个 Plug-in 的 Activator 类都有一个 getLog() 方法,返回一个 ILog 对象,这个对象就可以把 Exception 和 Log 记录到 Error Log View 中。ILog 对象最主要的方法就是 log 了,顾名思义,它接收一个 IStatus类型的对象,并把其代表的状态记录下来。Eclipse 和许多常用的插件(如JDT)实现了很多的 IStatus,最 common 的就是Status类,我们可以简单地使用它,或创建自己的 IStatus 实现。Status的构造函数有5个参数,具体如下:

 

这样的话,我们就可以编写一个LogUtil类来负责日志工作,代码如下:

 

package demo;

import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.Status;
import xxx.PluginActivator;


public class EclipseErrorLog
{
    private static ILog logger = null;
    static
    {
        logger = PluginActivator.getDefault().getLog();
    }

    private EclipseErrorLog()
    {
        // nothing to do
    }

    public static void logCancel(String message, Throwable exception)
    {
        logger.log(new Status(Status.CANCEL, PluginActivator.PLUGIN_ID, Status.OK, message, exception));
    }

    public static void logError(String message, Throwable exception)
    {
        logger.log(new Status(Status.ERROR, PluginActivator.PLUGIN_ID, Status.OK, message, exception));
    }

    public static void logInfo(String message, Throwable exception)
    {
        logger.log(new Status(Status.INFO, PluginActivator.PLUGIN_ID, Status.OK, message, exception));
    }

    public static void logOk(String message, Throwable exception)
    {
        logger.log(new Status(Status.OK, PluginActivator.PLUGIN_ID, Status.OK, message, exception));
    }

    public static void logWarning(String message, Throwable exception)
    {
        logger.log(new Status(Status.WARNING, PluginActivator.PLUGIN_ID, Status.OK, message, exception));
    }
}

 

除此之外,我们还可以通过 ILog 的 addLogListener 方法和 removeLogListener 方法为日志动作添加和删除事件监听器。这些Listener 可以帮助我们在日志记录完成后做一些额外的事情。例如,如果记录的是 ERROR 级别的 Log,那么我们可能要弹出一个Alert 对话框告诉用户出现了错误,但如果是 INFO 级别,就没这个必要了。

 

 

备注:

本文转载自:http://hintcnuie.javaeye.com/blog/787932

  • int severity:日志的级别,可以是OK、ERROR、INFO、WARNING或CANCEL。这些常量都定义在Status类中。
  • String pluginId:当前Plug-in的ID。
  • int code:Plug-in指定的状态码,一般如果无需指定,则使用Status.OK。
  • String message:日志信息。
  • Throwable exception:记录的Exception,如果没有Exception,则传入null。

你可能感兴趣的:(eclipse,exception,String,null,Class)