使用Rcp自带的console显示日志信息相当方便,但是考虑到日志的同步显示,SWT中的多线程来同步打印日志需要使用Display.getDefault().asyncExec(new Runnable(){}),通过封装使用静态方法来实时打印日志信息。
package com.thomsonreuters.juno.bulkloader.handler; import java.text.SimpleDateFormat; public class ConsoleHandler{ private static MessageConsoleStream consoleStream; public static void info(final String _message){ Display.getDefault().asyncExec(new Runnable(){ @Override public void run() { consoleStream = ConsoleFactory.getConsole().newMessageStream(); consoleStream.println(new SimpleDateFormat("HH:mm:ss").format(new Date())+ "(INFO)" + " " + _message); } }); } public static void error(final String _message){ Display.getDefault().asyncExec(new Runnable(){ @Override public void run() { consoleStream = ConsoleFactory.getConsole().newMessageStream(); consoleStream.setColor(new Color(null,255,0,0)); consoleStream.println(new SimpleDateFormat("HH:mm:ss").format(new Date())+ "(ERROR)" + " " + _message); } }); } }