Автоматический регистратор событий Swing и SWT

1

В нашем настольном приложении много вариантов использования. И довольно часто очень сложно воспроизвести дефект и указать все шаги, как воспроизвести его.

Возможно ли создать что-то вроде Interceptor для всех событий Swing и SWT и записать их в консоль, не помещая log.info в каждый actionListener() или активатор просмотра, вкладку меню и т.д.?

Теги:
swing
rcp
swt

1 ответ

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());
 }
  • 0
    Это будет регистрировать все события
  • 0
    :-) не использовать push (), удалить все события, очистить очередь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню