Swing和SWT事件自动记录器

时间:2014-04-02 20:18:36

标签: java eclipse swing swt rcp

我们的桌面应用程序有很多用例。并且通常很难再现缺陷并指定如何重现它的所有步骤。

是否可以为所有Swing和SWT事件创建类似Interceptor的东西,并将它们记录到控制台而不在每个actionListener()或视图激活器,菜单贡献者等中放置log.info?

1 个答案:

答案 0 :(得分:3)

也许你可以做这样的事情。

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());
 }