【发布时间】:2014-04-02 20:18:35
【问题描述】:
我们的桌面应用程序有很多用例。并且通常很难重现缺陷并指定如何重现它的所有步骤。
是否可以为所有 Swing 和 SWT 事件创建类似 Interceptor 的东西,并将它们记录到控制台,而无需将 log.info 放入每个 actionListener() 或视图激活器、菜单贡献者等?
【问题讨论】:
标签: java eclipse swing swt rcp
我们的桌面应用程序有很多用例。并且通常很难重现缺陷并指定如何重现它的所有步骤。
是否可以为所有 Swing 和 SWT 事件创建类似 Interceptor 的东西,并将它们记录到控制台,而无需将 log.info 放入每个 actionListener() 或视图激活器、菜单贡献者等?
【问题讨论】:
标签: java eclipse swing swt rcp
也许你可以这样做。
public class MyEventQueue extends EventQueue {
private static final Logger logger = Logger.getLogger( MyEventQueue.class.getName() );
@Override
protected void dispatchEvent( AWTEvent newEvent )
{
try {
logger.info("New Event start: "+ newEvent.toString() );
super.dispatchEvent( newEvent );
} catch( RuntimeException e ) {
//log uncatch exceptions in edt
logger.error(e.getCause(),e);
JOptionPane.showMessageDialog( null, "someDescriptiveMessage");
}
}
}
您可以在应用程序启动之前使用辅助方法来设置它。
public static void captureUncaughtExceptionInEvent(){
EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
queue.push(new MyEventQueue());
}
【讨论】: