В нашем настольном приложении много вариантов использования. И довольно часто очень сложно воспроизвести дефект и указать все шаги, как воспроизвести его.
Возможно ли создать что-то вроде Interceptor для всех событий Swing и SWT и записать их в консоль, не помещая log.info в каждый actionListener() или активатор просмотра, вкладку меню и т.д.?
Возможно, вы можете сделать что-то подобное.
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());
}