Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing和SWT事件自动记录器_Java_Eclipse_Swing_Swt_Rcp - Fatal编程技术网

Java Swing和SWT事件自动记录器

Java Swing和SWT事件自动记录器,java,eclipse,swing,swt,rcp,Java,Eclipse,Swing,Swt,Rcp,我们的桌面应用程序有很多用例。而且通常很难重现缺陷,并指定如何重现缺陷的所有步骤 是否可以为所有Swing和SWT事件创建类似拦截器的内容,并将它们记录到控制台,而无需将log.info放入每个actionListener()或view activator中,或在菜单contributor上等等?也许您可以这样做 public class MyEventQueue extends EventQueue { private static final Logger logger = Log

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


是否可以为所有Swing和SWT事件创建类似拦截器的内容,并将它们记录到控制台,而无需将log.info放入每个actionListener()或view activator中,或在菜单contributor上等等?

也许您可以这样做

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

这将记录所有事件