2 * event dispatcher with logging
4 * License : The MIT License
5 * Copyright(c) 2011 olyutorskii
8 package jp.sfjp.jindolf.log;
10 import java.awt.AWTEvent;
11 import java.awt.EventQueue;
12 import java.awt.Toolkit;
13 import java.util.logging.Level;
14 import java.util.logging.Logger;
17 * 異常系をロギングするイベントディスパッチャ。
19 public class LoggingDispatcher extends EventQueue{
21 private static final String FATALMSG =
22 "イベントディスパッチ中に異常が起きました。";
24 private static final Logger LOGGER = Logger.getAnonymousLogger();
30 public LoggingDispatcher(){
38 * カスタム化されたイベントキューに差し替える。
40 public static void replaceEventQueue(){
41 Toolkit kit = Toolkit.getDefaultToolkit();
42 EventQueue oldQueue = kit.getSystemEventQueue();
43 EventQueue newQueue = new LoggingDispatcher();
44 oldQueue.push(newQueue);
52 private static void logThrowable(Throwable e){
53 LOGGER.log(Level.SEVERE, FATALMSG, e);
60 * イベントディスパッチにより発生した例外を匿名ログ出力する。
61 * @param event {@inheritDoc}
64 protected void dispatchEvent(AWTEvent event){
66 super.dispatchEvent(event);
67 }catch(RuntimeException | Error e){
73 // TODO Toolkit#beep()もするべきか
74 // TODO モーダルダイアログを出すべきか
75 // TODO 標準エラー出力抑止オプションを用意すべきか